PostgreSQLのエラー「initdb: cannot be run as root」の原因と解決方法
Solaris等でinitdbを実行しようとすると、「initdb: cannot be run as root」というエラーメッセージが表示され、initdbを実行できないことがある。
-bash-3.00# /usr/local/postgresql8/bin/initdb --encoding=EUC_JP --no-locale -D /usr/local/postgresql8/data
initdb: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.
エラーメッセージを読むと、initdbはrootユーザで実行してはいけないことが分かる。
このエラーを解決するには、rootユーザ以外でinitdbを実行してやればよい。
たとえば、su - postgresでpostgresユーザになってから、initdbを実行すればよい。
-bash-3.00# su - postgres
$ /usr/local/postgresql8/bin/initdb --encoding=EUC_JP --no-locale -D /usr/local/postgresql8/data