如何在postgresql中正确配置数据库权限

How to configure database permissions correctly in postgresql

在新服务器中设置数据库的正确方法是什么? 我目前正在使用Ubuntu 14.04的EC2实例。 这是我到目前为止所做的:

首先安装postgresql

1
2
3
4
$ sudo sh -c 'echo"deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main">> /etc/apt/sources.list.d/pgdg.list'
$ wget -q https://www.postgresql.org/media/KEYS/ACCC4CF8.asc -O - | sudo apt-KEY ADD -
$ sudo apt-GET UPDATE
$ sudo apt-GET install postgresql postgresql-contrib

根据这个答案,我执行以下操作:

1
2
3
4
5
$ su - postgres # OR sudo -u postgres -i
$ psql template1
template1=# CREATE USER tester WITH PASSWORD 'test_password';
template1=# GRANT ALL PRIVILEGES ON DATABASE"test_database" TO tester;
template1=# \q

但是,当我想使用'tester'登录时,我收到此错误:

1
2
$ psql -U tester test_database
psql: FATAL: Peer authentication failed FOR USER"tester"

根据文档,我需要更改pg_hba.conf文件:

1
$ sudo vi /etc/postgresql/9.5/main/pg_hba.conf

并更改以下行:

1
2
#"local" IS FOR Unix DOMAIN socket connections ONLY
LOCAL    ALL    ALL    peer

使用"md5"代替"同行"。 更改该文件后,需要重新启动服务器:

1
sudo service postgresql restart

这样,我终于能够连接到数据库了。 但是,由于我不理解其中的一些步骤,我想知道是否有更好的方法来实现相同的目标,如果我在这个过程中损害了数据库的安全性。


http://postgresql.org/docs/current/static/auth-methods.html描述了不同的auth方法,但基本上主要是在postgres实例中创建用户,为他设置密码并根据需要配置hba.conf。

如果您为其创建os用户"tester"和su,则可以使用"peer"身份验证在本地连接到db