0

に以下を入力して、md5ユーザーの認証を構成しました。foopg_hba.conf

# TYPE    DATABASE    USER    ADDRESS    METHOD
local     all         foo                md5

psqlLinux ユーザーとして (を使用して)foo接続しようとするpsqlと、パスワードが要求され、接続は成功します。ただし、psql他の Linux ユーザーとして実行すると、次のエラーが表示されます。

psql: FATAL:  password authentication failed for user "foo"

この動作の理由は何ですか? peerこれは、またはident認証方法を使用する場合にのみ必要であるという印象を受けています。

編集:コマンドpsql -U foo -Wを使用して接続しています。コマンドの前に付けるsudo -u fooと機能します。そうしないと、上記のエラーが発生します。元の質問を投稿する際にこれについて言及しなかったことをお詫びします。

編集2:

以下は、私のコメントからのすべての行をpg_hba.conf順番に並べたものです。

# TYPE    DATABASE    USER        ADDRESS        METHOD
local     all         postgres                   peer
local     all         foo                        md5
local     all         all         127.0.0.1/32   md5
local     all         all         ::1/128        md5
4

2 に答える 2

1

データベースを指定しない場合、Linux ユーザーと同じ名前でデータベースに接続しようとします。次のようにログインしている場合bar:

psql -U foo -W

barユーザーでデータベースにログインしようとしfooます。fooログインからデータベースに接続するには、次のようにbarします。

psql -U foo -W foo
于 2013-05-03T11:03:57.113 に答える
0

psqlデフォルトは、現在のユーザーが何であるかです。フラグを使用して-U、データベースの「役割」を選択します。

Postgres ロールとシステム ユーザーは別個のものですが、認証はシステム自体 (pam/ldap/etc) に対して機能するように構成できます。

于 2013-05-03T09:22:07.070 に答える