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

How to configure database permissions correctly in postgresql

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

首先installpostgresql

$ 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

基于此answer,我执行以下操作:

$ 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' 登录时,我得到这个错误:

$ psql -U tester test_database
psql: FATAL: Peer authentication failed for user "tester"

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

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

并更改以下行:

# "local" is for Unix domain socket connections only
local    all    all    peer

使用 "md5" 而不是 "peer"。更改该文件后,需要重新启动服务器:

sudo service postgresql restart

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

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

如果您创建 os 用户 "tester" 并向其创建 su,您可以使用 "peer" 身份验证

在本地连接到数据库