2017-03-27 5 views
0

私は起動時にmonitからbashファイルを実行しています。そのbashファイルは私のpostgresサーバーを起動します。起動時にpostgresユーザーを作成する

私のデータベースディレクトリには、私は、存在しない場合:

の1- initdbを(postgresqlの/データ/) SU - エッジ-c 'は/ usr/binに/ initdbを-D $ {DBDIR}'

2-(/ postgresqlの/データ)にpg_hba.confとそのpostgresql.confのファイルを修正したコピー

、3-私のサーバー SU開始 - エッジ-c "は/ usr/binに/にpg_ctl -w -D $ {DBDIR } -lログファイルの開始 "

4 postgres createuser - SU - $ユーザー-c '$ {DBDIR} -e -s postgresの'

postgresqlのは// ファイルを作成されたデータは、サーバが起動され コピーされ、bashのファイルを実行した後、 ユーザーがあります/ usr/binに/ psqlの-U postgresの のpsql:FATAL:私は私のデータベース

エラーアクセスすることはできません作成されていない役割 "のpostgres" を

答えて

0

存在しません。私はあなたのステップ#4を解読することはできませんが、 postgresロールが存在しない理由は、ステップ#1がユーザによって実行されているからです。edge-Upostgresロールの作成を要求しないため、代わりにスーパーユーザーとしてegdeロールが作成されます。 initdbマニュアルに従って

-Uユーザ名
--username =ユーザ名

は、データベースのスーパーユーザのユーザ名を選択します。こののデフォルトは、initdbを実行している有効なユーザーの名前です。スーパーユーザーの名前は実際には ではありませんが、オペレーティングシステムのユーザー名が であっても、 を通常の名前のpostgresにしておくことをお勧めします。

initdb -U postgresを行うか、edgeという名前のスーパーを好む場合は、このようにそれを維持するが、psql -U edgepsqlを開始するか、その都度ことタイピングを避けるためにedgePGUSER環境変数を設定するのどちらか。

+0

おかげで、私は、ドキュメントのその部分を読んでいたが、何らかの理由で、私はそれを作成しないで、-Uは、作成したスーパーユーザの名前を与えるために使用されたことを読みました。 は、initdbの前にスーパーユーザーを作成できなかったという事実だけでそれを捕らえたはずです。 – DavidG

関連する問題