我正在尝试在Ubuntu机器上设置Postgresql数据库.我希望能够使用pgAdmin3从远程计算机访问它.我该如何设置?
sudo apt-get install postgresql
在我的/etc/postgresql/9.1/main/pg_hba.conf中我有这一行:
host all all all password
因此它应接受来自所有IPv4地址的连接,并且密码应以明文形式发送(这是出于开发原因).
如果我运行此命令以查看正在运行的服务:
sudo netstat -tulpn
我可以看到这些行,这表明Postgresql正在接受默认端口上的连接:
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 3561/postgres
当我尝试从同一本地网络上的远程计算机连接到此Postgresql服务器时,我收到以下错误消息:
Server doesn’t listen
The server doesn’t accept connections: the connection library reports
could not connect to server: Connection refused Is the server running on host “10.0.1.7” and accepting TCP/IP connections on port 5432?
我使用postgres作为用户名而没有密码.但我也试过postgres作为密码.在本地服务器上,我可以使用:
sudo -u postgres psql postgres
netstat报告中的行显示数据库仅在localhost:5432(127.0.0.1)上侦听传入的tcp连接.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 3561/postgres
因此,无论您在pg_hba.conf中指定了哪些权限,它都只能接受本地tcp连接. pg_hba.conf仅指定允许的连接,但不指定服务将侦听的接口.
服务器侦听的地址是使用listen_addresses GUC in postgresql.conf指定的.如果您希望服务器侦听远程连接,则应指定要监听的IP或*以侦听主机上所有可用接口.
要让postgresql服务器监听主机上的所有接口,你应该在postgresql.conf中有以下行:
listen_addresses = '*'