问题
在pgAdmin中,将本地数据库连接的host由localhost
或127.0.0.1
改为自己的真实ip–10.xxx.xxx.xxx
后,连接失败,报错如下:
psql: could not connect to server: Connection refused
Is the server running on host "my host name" (IP) and accepting
TCP/IP connections on port 5432?
解决
出现上述问题时,需修改postgresql.conf和pg_hba.conf文件。
此文件位于postgresql数据文件目录中,默认为/var/lib/pgsql/data/
。将postgresql.conf修改如下:listen_addresses = '*'
。
pg_hba.conf中增加需要连接该数据库主机的ip地址。如下所示,增加对主机10.xxx.xxx.xxx
的信任。
host all all 10.xxx.xxx.xxx/32 trust
如上设置后,使用10.xxx.xxx.xxx
可正常连接。
解释
原来,在客户端访问Postgresql数据库时,Postgresql会读取文件pg_hba.conf
判断是否信任该主机,故所有需要连接Postgresql Server的主机都应当在pg_hba.conf
中添加对其信任,即使是Server主机也不例外!