PostgreSQLの/var/lib/pgsql/data/pg_hba.conf
trust
およびident
は、method
として設定できます。そのようです。
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all postgres trust
Host all postgres 127.0.0.1/32 trust
私は、2つの違いはtrust
であるという印象を受けました。root
ができるように私は
psql postgres
そしてident
で私はしなければなりませんでした
Sudo -u postgres psql postgres
ただし、trust
を使用しても、最初のコマンドが機能しません。
質問
誰かがtrust
とident
の違いを説明できますか?
「信頼」とは、「クライアントが使用するユーザー名が何であれ、ユーザーを確認するためにパスワードを要求する必要がないこと」を意味します。
「Ident」は、「パスワードを確認することなく、identdがユーザー名として返すものをすべて受け入れる」ことを意味します。
postgresqlサイト に、さまざまな認証方法の詳細があります。
この特定の接続が失敗した理由を理解するには、postgresqlログを確認する必要があります。使用しているユーザー名がpostgresデータベースに存在しないか、他の問題である可能性があります。最初にログを確認しないとわかりません。
psql
は、データベースのユーザー名でデータベースに接続する必要があります。 -U
オプションで指定されていない場合は、OSのユーザー名がデフォルト値として使用されます。
したがって、実際には、psql dbname
はpsql -U $USER dbname
と同等です。
その結果、root
としてログに記録され、root
という名前のデータベースユーザーを作成していない場合、認証モードがtrust
。
#psql postgres
psql:致命的:ロール「root」が存在しません
一方、次のように呼び出され、まだrootとしてログに記録されている場合は機能します。
#psql -U postgres postgres
postgres
という名前のデータベースとpostgres
という名前のユーザーの両方が存在するため、これは問題ありません。これらはPostgreSQLのインストール中に自動的に作成されるためです。