我所做的一切都在我的本地机器(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
然后重新启动服务器,我仍然不需要提供密码来登录数据库。
有人可以告诉如何强制服务器验证登录密码的正确性吗?
答案 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服务器。