我想创建一个只能访问指定数据库的用户。但是,它应该拥有所有权限。我在 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退出 nanoCtrlX
使用以下方法重启 postgresql
sudo service postgresql restart