3

デプロイメントで実行されるシェルスクリプトがあり、次の行があります。

# Database
createdb $DBNAME
createuser -D -A $DBNAME

ただし、ログに次のエラーが表示されます。

  • createdb:データベースに接続できませんでしたpostgres:致命的:ユーザー「root」のID認証に失敗しました
  • createuser:データベースに接続できませんでしたpostgres:致命的:ユーザー「root」のID認証に失敗しました

ここで何が問題になっているのか、どのように行を修正できるのかを教えていただけませんか。確かにrootはこれを行う許可を持っている必要がありますか?

4

2 に答える 2

4

これを行うための最良の方法は、特にスクリプトを移植可能にしたい場合は、次のとおりです。

su --login postgres --command "createdb $DBNAME"

これは、を使用するよりも安全で、安全で、移植性が高いはず-Uです。私はすべてのposgreSQLスクリプトでこのようにしています。あなたはそれが便利なテクニックだと思うかもしれません。明らかに、rootユーザーとして実行する必要があります(例:with sudo)。

于 2012-12-08T23:50:11.053 に答える
3

DBが保護されている場合は、OSのユーザーとしてではなく、DBユーザーとして接続する必要があります。例えば:

createdb -U dbrootuser -W $DBNAME 

完全な構文については、このリンクを参照してください

于 2012-12-08T23:05:52.133 に答える