我想做一些非常简单的事情:创建一个PostgreSQL数据库,然后使用psql
连接到它。所以这就是我所做的:
sudo apt install postgresql-9.6
(在Ubuntu 18.04上)sudo -su postgres
(为postgres系统用户启动shell)createuser -P foo
(创建一个用户并提示输入该用户的密码)createdb -O foo foo
(创建先前创建的用户拥有的数据库)所有这些都完美无瑕,任何地方都没有错误。但是,当我尝试使用psql -h localhost -U foo foo
连接到数据库时,我无法访问数据库(密码绝对正确)。错误消息是psql: FATAL: password authentication failed for user "foo"
/etc/postgresql/9.6/main/pg_hba.conf
如下所示:
local all postgres peer
local all all peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
对我来说一切都很好,但是那根本行不通。我在这里想念什么?
我也尝试过alter user foo valid until 'infinity'
。尽管命令成功完成,但对解决问题没有帮助。
//编辑:我注意到这个问题有些奇怪。当我删除-h localhost
时,对等身份验证失败(如预期的那样,因为系统上没有用户foo
)。这将在/var/log/postgresql/postgresql-9.6-main.log
中保留三行日志。但是,当我使用-h localhost
标志时,根本不会生成任何日志。
// edit:我现在已经在Fedora 28机器上尝试了相同的操作,并且按预期工作。我不知道会有什么区别(除了操作系统和postgres版本(10.5)