Centos6のyumリポジトリを介して新しくインストールされたバージョンのPostgres9.2で、すぐに「postgres:postgres」(u:g)として実行するように構成されている場合、別のユーザーとしてpostgresをどのように実行しますか?
2 に答える
AndrewPK の説明に加えて、システムの Pg サービスを停止して無効にすることで、任意のユーザーとして新しい PostgreSQL インスタンスを開始することもできることに注意してください。
initdb -D /path/to/data/directory
pg_ctl start -D /path/to/data/directory
ただし、これは起動時にサーバーを自動起動しません。そのためには、init システムに統合する必要があります。CentOS 6 では、単純な System V スタイルの init スクリプトを /etc/init.d/ に配置し、適切なシンボリック リンクを /etc/rc3.d/ または /etc/rc3.d/ (デフォルトのランレベルに応じて) に配置するだけで十分です。
一度に複数のインスタンスを実行する場合、それらは異なるポート上にある必要があります。port
datadir のディレクティブを変更するpostgresql.conf
か、起動時に で設定しpg_ctl -o "-p 5433" ...
ます。unix_socket_directories
ユーザーがデフォルトのソケット ディレクトリへの書き込み権限を持っていない場合は、をオーバーライドする必要がある場合もあります。
これは、データディレクトリを吹き飛ばすことを伴うため、(私の状況に関連する)新規インストールの場合のみです。
パッケージ化されたスタートアップスクリプトをフレッシュインストールに利用しながら、この問題を解決するために行った手順は次のとおりです。
/var/lib/pgsql/9.2/data
postgres user:groupをデフォルトとして設定してinitdbプロセスをすでに実行している場合は、postgresデータディレクトリを削除します。- 起動スクリプト()を変更して、のすべてのインスタンスを。
/etc/init.d/postgresql-9.2
に置き換えます。postgres:postgres
NEWUSER:NEWGROUP
- 起動スクリプトを変更して
postgres
、任意の$SU -l postgres
行ののすべてのインスタンスを。に置き換えますNEWUSER
。 /etc/init.d/postgres initdb
新しいユーザー名を使用してクラスターを再生成するために実行します- 作成されたログが新しいユーザーによって所有されていることを確認するか、initdbでエラーが発生した場合は古いログを削除します(私の場合は構成ファイルがで見つかりました
/var/lib/pgsql/9.2/data/postgresql.conf
)。 - postgresを起動すると、新しいユーザー/グループで実行されているはずです。
既存のpostgresデータベースがあり、サーバーを再起動して別のユーザー/グループコンボとして実行したい場合、これは他の人が探しているものではない可能性があることを理解しています-これは私の場合ではなく、どこにも回答が投稿されていませんでした事前にパッケージ化された起動スクリプトを利用した「新規」インストールの場合。