特定のデータベースにのみアクセスできるユーザーを作成したいのですが、すべての権限が必要です。Ubuntu 14.04 で Postgresql 9.5 を使用しています。まず、新しいユーザーを作成します。
$createuser --interactive joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
次に、所有者 joe で新しいデータベースを作成します。
$sudo -u postgres psql
$CREATE DATABASE myDB OWNER joe;
$GRANT ALL ON DATABASE myDB TO joe;
その後、ユーザー joe でデータベース myDB に接続しようとします。
$psql myDB -U joe
psql: FATAL: Peer authentication failed for user "joe"
次に何をすればいいでしょうか?
答え1
/etc/postgresql/9.5/main/pg_hba.conf
ルートアクセスで開くsudo nano /etc/postgresql/9.5/main/pg_hba.conf
peer
これらの行を に変更しますmd5
。変更する前に
# "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 peer # IPv6 local connections: host all all ::1/128 peer
変更後
# "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5
Ctrl-を押してファイルを保存しますO。Ctrl-でnanoを終了します。X
PostgreSQLを再起動します。
sudo service postgresql restart