web-dev-qa-db-ja.com

postgreSQLの「信頼」と「アイデンティティ」の違いは?

PostgreSQLの/var/lib/pgsql/data/pg_hba.conftrustおよび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を使用しても、最初のコマンドが機能しません。

質問

誰かがtrustidentの違いを説明できますか?

4
Sandra

「信頼」とは、「クライアントが使用するユーザー名が何であれ、ユーザーを確認するためにパスワードを要求する必要がないこと」を意味します。

「Ident」は、「パスワードを確認することなく、identdがユーザー名として返すものをすべて受け入れる」ことを意味します。

postgresqlサイト に、さまざまな認証方法の詳細があります。

この特定の接続が失敗した理由を理解するには、postgresqlログを確認する必要があります。使用しているユーザー名がpostgresデータベースに存在しないか、他の問題である可能性があります。最初にログを確認しないとわかりません。

4
Jenny D

psqlは、データベースのユーザー名でデータベースに接続する必要があります。 -Uオプションで指定されていない場合は、OSのユーザー名がデフォルト値として使用されます。

したがって、実際には、psql dbnamepsql -U $USER dbnameと同等です。

その結果、rootとしてログに記録され、rootという名前のデータベースユーザーを作成していない場合、認証モードがtrust

#psql postgres
psql:致命的:ロール「root」が存在しません

一方、次のように呼び出され、まだrootとしてログに記録されている場合は機能します。

#psql -U postgres postgres

postgresという名前のデータベースとpostgresという名前のユーザーの両方が存在するため、これは問題ありません。これらはPostgreSQLのインストール中に自動的に作成されるためです。

3
Daniel Vérité