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

如何使用密码强制Postgresql用户登录,postgresql,authentication,passwords,Postgresql,Authentication,Passwords,我所做的一切都是在我的本地计算机(Mac OS)中进行的。 安装postgresql后,我创建了一个名为poet的用户,并使用密码,然后创建了一个名为poems的数据库,该数据库的所有者是poet。 我好奇的是,我可以不用密码就和诗人一起登录诗歌。 命令是psql-U poter-d poems。 那么密码的用途是什么? 我知道我可以添加-W以获得密码提示psql-U poet-d poems-W,但即使使用错误的密码,我仍然可以登录 然后我修改配置文件(/usr/local/var/postg

我所做的一切都是在我的本地计算机(Mac OS)中进行的。

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

我好奇的是,我可以不用密码就和诗人一起登录诗歌。

命令是
psql-U poter-d poems
。 那么密码的用途是什么?

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

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

#“local”仅用于Unix域套接字连接
#本地所有信任
本地所有密码
#IPv4本地连接:
#托管所有127.0.0.1/32信任
主机所有127.0.0.1/32密码
#IPv6本地连接:
#主机所有::1/128信任
主机所有::1/128密码
然后重新启动服务器,我仍然不需要提供登录数据库的密码。


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

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

找到正确的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)
编辑文件以强制密码登录。。。将管理员(超级用户)保留为信任。 我使用了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服务器。

FYI:如果使用
方法
作为
密码
将以明文发送。相反,尝试使用
crypt
md5
或更安全的方法。顺便说一句,你确定密码在系统表中吗?@MarlonAbeykoon,谢谢你的建议。我可以在pg_shadow表中找到诗人,他的密码也是加密的。也许你会发现这个答案很有用:这个答案能回答你的问题吗?有可能为所有这些编写脚本吗?这太疯狂了。我希望能够自动创建一个带有密码的用户,而不必担心编辑这个该死的文件(.这是一个边缘案例。我只需要在所有postgres安装中执行一次,是的…它可以编写脚本。是的。我能够使用
HBA_文件=$(cd/tmp&&sudo-u postgres psql-qAt-F'|'-c“选择当前_设置('HBA_文件')”)
编写脚本,然后
sudo sed-I“s/host.*all.*all.*127.0.0.1\/32.*ident/host all 127.0.0.1\/32 md5/”${HBA_FILE}sudo sed-i“s/host.*all.*all.*1\/128.*ident/host all::1\/128 md5/${HBA_FILE}
令人印象深刻:-)干杯!