psql: FATAL: Ident authentication failed for user "foo" (自分用メモ)

普段MySQLしか使わないので、急にPostgreSQLの仕事が来て、少し慌ててしまいました。

MySQLと異なりPostgreSQLのデフォルトでは、OSのユーザー名とデータベースのユーザー名が一致しないとpsqlでログインできません。

例えば、OSのユーザー名がkurodaで、ユーザーfooでデータベースbarにログインしたい場合、


$ psql -U foo bar
psql: FATAL: Ident authentication failed for user "foo"

のようにエラーになります。

この時は、まずpg_ident.confの末尾にこんな風な記述を追加します。


devel kuroda foo
devel suzuki foo

最初のdevelはマップネームというもので、適当に決めてください。kurodaユーザーとsuzukiユーザーがfooとしてPostgreSQLにログインする設定です。

次に、pg_hba.confを修正します。


local all all ident sameuser

という記述を探して、


local all all ident devel

と書き換えます。そして、


$ sudo /etc/init.d/postgresql reload

を実行します。

pg_ident.confおよびpg_hba.confは、私の環境(Ubuntu)では、/etc/postgresql/8.3/main ディレクトリにありました。