如何在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" 身份验证
在本地连接到数据库
在新服务器上设置数据库的正确方法是什么?我目前正在使用 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" 身份验证