我在 ubuntu 14.04 LTS 上运行 PostgreSQL 9.3。它是 apt 中提供的常规 Postgres 发行版。我在各种论坛中发现了大量帖子,这些帖子表明允许远程 psql 连接到数据库的正确方法是将以下行添加到 /etc/postgresql/9.3/main/pg_hba.conf:
host all all 0.0.0.0/0 md5
并在 /etc/postgresql/9.3/main/postgresql.conf 中设置:
listen_addresses = '*'
然后重新启动 dbms(“sudo service postgresql restart”)
我已经完成此操作,但在尝试从另一台服务器连接到此数据库时仍然出现以下错误:
psql -h <the db host> -p 5433 -d the_db the_user
$> Password for user the_user:
$> (I enter the pw)
$> psql: FATAL: password authentication failed for user "the_user"
$> FATAL: password authentication failed for user "the_user"
请注意,密码绝对正确,因为在数据库主机上执行以下操作可以成功进入:
$> psql -h localhost -d the_db the_user
$> Password for user the_user:
$> (I enter the exact same pw as above)
$> psql (9.3.5, server 9.1.13)
$> Type "help" for help.
$>
<the psql shell session begins>
我不知道我哪里出错了,因为配置似乎是正确的,密码是正确的,主机似乎正在接受远程连接(对于提示),只是在身份验证时失败了。如果您对如何实现这一点有想法,请告诉我。谢谢。
答案1
在第一个会话中,您使用端口 5433,在第二个会话中,您使用默认端口 5432。您可能安装了多个集群(它们可能附带不同版本的 PostgreSQL 包)。我建议您删除不使用的集群,pg_dropcluster
并检查您是否连接到正确的集群。
(在放下东西之前一定要仔细检查,看看数据库里是否有有价值的信息)