web-dev-qa-db-ja.com

ログイン+パスワード認証を受け入れるようにpostgresqlを設定する方法は?

すべてのアップデートとpostgresql 8.4を含む新しいubuntu 10.10をインストールしています
postgresqlがログイン+パスワード接続を受け入れるために、次の方法で設定しました。

Sudo su postgres
psql
ALTER USER postgres WITH PASSWORD 'password';
CREATE DATABASE myapp;
\q
exit
Sudo vi /etc/postgresql/8.4/main/pg_hba.conf
change "local all all indent" to "local all all trust"

しかし、驚くべきことに、これは機能していません!コマンド

psql -U postgres password

エラーで評価します:

psql: FATAL:  Ident authentication failed for user "postgres"

psql -Uを機能させる方法のヒントはありますか?

31
grigoryvp

「postgres」ユーザーにident認証を残すことをお勧めします。デフォルトでは、Ubuntuは「postgres」ユーザーを使用してアップグレードやバックアップなどを実行するため、パスワードを指定せずにログインできる必要があります。

別のユーザーを作成し(おそらく独自のユーザー名で)、管理者権限も付与することをお勧めします。次に、ローカル接続でそのユーザーをパスワードで使用できます。

Pg_hba.confの関連部分は次のようになります。

# allow postgres user to use "ident" authentication on Unix sockets
# (as per recent comments, omit "sameuser" if on postgres 8.4 or later)
local   all   postgres                         ident sameuser
# allow all other users to use "md5" authentication on Unix sockets
local   all   all                              md5
# for users connected via local IPv4 or IPv6 connections, always require md5
Host    all   all        127.0.0.1/32          md5
Host    all   all        ::1/128               md5

また、psql -U postgres passwordはあなたが望むことをしないことに注意してください。パスワードはコマンドラインで指定しないでください。それは、ユーザー「postgres」として「password」という名前のデータベースにログインしようとします。

代わりにpsql -U postgres myappを使用する必要があります。パスワードが要求されるように適切に設定されている場合、Postgresは自動的にパスワードの入力を求めます。

パスワードを自動的に入力する場合は、 $ HOME/.pgpassファイルに配置

44
cecilkorik

あなたのpg_ident.confファイルの設定が間違っています。また、試しましたか

psql -U postgres -W
2
Max

これを引き起こす可能性があるもう1つのことは、期限切れの資格情報です。これはバージョン8では発生しなかったと思いますが、バージョン9ではpgadminで新しいロールを作成すると、有効期限が切れた状態で作成され、ログインできるようになる前にロールの有効期限を変更またはクリアする必要がありますそれ。

1
elc