我想建立一個只能存取指定資料庫的使用者。但是,它應該獲得所有許可。我在 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
使用root權限開啟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-退出 nanoX
使用以下命令重新啟動 postgresql
sudo service postgresql restart