如何使用密码强制Postgresql用户登录

时间:2015-04-16 15:35:12

标签: postgresql authentication passwords

我所做的一切都在我的本地机器(Mac OS)中。

安装postgresql后,我创建了一个名为poet的用户密码,然后创建了一个名为poems的数据库,数据库的所有者就是诗人。

我很好奇的是,我可以用没有密码的诗人登录诗歌。

命令为psql -U poet -d poems。 那么密码的用法是什么?

我知道我可以添加-W来获取密码提示psql -U poet -d poems -W,但即使密码错误我仍然可以登录!

然后我修改配置文件(/usr/local/var/postgres/pg_hba.conf),如下所示:

# "local" is for Unix domain socket connections only
#local   all             all                                     trust
local   all             all                                     password
# IPv4 local connections:
#host    all             all             127.0.0.1/32            trust
host    all             all             127.0.0.1/32            password
# IPv6 local connections:
#host    all             all             ::1/128                 trust
host    all             all             ::1/128                 password

然后重新启动服务器,我仍然不需要提供密码来登录数据库。

有人可以告诉如何强制服务器验证登录密码的正确性吗?

1 个答案:

答案 0 :(得分:1)

这也发生在我身上。非特权帐户可以使用无效密码登录。我采取的解决问题的步骤是。

找到正确的pg_hba.conf文件。

$ psql -h 127.0.0.1 -U admin -W postgres
Password for user admin: 
psql (9.6.5)
Type "help" for help.

openproject_dev=# SHOW hba_file ;
              hba_file               
-------------------------------------
 /usr/local/var/postgres/pg_hba.conf
(1 row)

编辑文件以强制密码登录...将admin(超级用户)保留为trust。 我使用md5代替密码..密码也可以。

# "local" is for Unix domain socket connections only
local   all             admin                                   trust
local   all             all                                     md5
# IPv4 local connections:
host    all             admin           127.0.0.1/32            trust
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             admin           ::1/128                 trust
host    all             all             ::1/128                 md5

保存pg_hba.conf文件并重新启动postgres服务器。