psqlをデフォルトでlocalhostにする方法は?


10

次のシナリオがあります。

saji@geeklap:~$ psql -U postgres
psql: FATAL:  Ident authentication failed for user "postgres"

saji@geeklap:~$ psql -h localhost -U postgres
Password for user postgres: 
psql (8.4.14)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=# 

postgresqlシステムにインストールされているサーバーにユーザーとしてログインしようとしていますpostgres。を指定し-h localhostた場合にのみログインできます。psqlドキュメントはそれを言うのに対し:

ホスト名を省略した場合、psqlはUnixドメインソケットを介してローカルホスト上のサーバーに接続するか、TCP / IPを介してUnixドメインソケットを持たないマシン上のlocalhostに接続します。

参照: http : //www.postgresql.org/docs/current/static/app-psql.html#R2-APP-PSQL-CON

ホストを指定せずにログインできないのはなぜpsqlですか。ドキュメントに記載されているように、何かを行うために変更が必要な構成ファイルがありますか?


.psqlrcデフォルトを指定するを作成します-または、(UNIXソケット)接続に認証pg_hba.confを使用するように編集します。およびのドキュメントを参照してください。md5localpg_hba.confpsql
クレイグリンガー

回答:


7

実際には、ドキュメントどおりに機能します。

ホスト名が省略された場合、psqlパスがコンパイルされたUnixドメインソケットに接続します。その部分はあなたのケースで機能します。そうでなければ、質問が示すものとは異なるエラーメッセージを出力します。

質問のエラーメッセージ:

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

Unixドメインソケットを使用する場合、Unixユーザーpostgresのみがデータベースユーザーpostgresとして接続する権限を持っているという事実に関連しています。これはpg_hba.confファイルで設定されます。

通常のユーザーとしてログインしているが、あなたがシステムの管理者である場合、Ubuntuで通常何をすべきか:

$ sudo -u postgres psql

1
ありがとうございます。に変更sudo -u postgresql psqlしてくださいsudo -u postgres psql。編集してみました。しかし、編集は6文字未満なので、できませんでした。
saji89

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.