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" |
根据文档,我需要更改
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"和