“psql: could not connect to server: Connection refused” Error when connecting to remote database
我正在尝试使用以下命令连接到远程服务器中安装的postgres数据库:
psql -h
发生以下错误:
psql: could not connect to server: Connection refused
Is the server running on host"" and accepting
TCP/IP connections on port 5432?
我已经尝试了以下但问题仍未解决:
host all all 0.0.0.0/0 md5
listen_addresses='*'
Nmap scan report for 10.17.250.250
Host is up (0.0000040s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
我错过了什么。 希望有人能提供帮助。
1 | cd /etc/postgresql/9.x/main/ |
打开名为
1 | sudo vi postgresql.conf |
将此行添加到该文件
1 | listen_addresses = '*' |
然后打开名为
1 | sudo vi pg_hba.conf |
并将此行添加到该文件
1 | host ALL ALL 0.0.0.0/0 md5 |
它允许使用加密密码访问所有用户的所有数据库
重启你的服务器
1 | sudo /etc/init.d/postgresql restart |
检查
当我尝试远程连接到我的Raspberry Pi上的新PostgreSQL安装时,我一直在努力解决这个问题。以下是我为解决此问题所做的全部细分:
首先,打开PostgreSQL配置文件,确保该服务将在localhost之外侦听。
1 | sudo [editor] /etc/postgresql/[version]/main/postgresql.conf |
我使用
向下搜索标题为"连接和身份验证"的部分。第一个设置应为
1 | #listen_addresses = 'localhost' # what IP address(es) TO listen ON; |
右边的注释提供了有关如何更改此字段的良好说明,并且使用建议的
请注意,此字段已注明#。根据注释,它将默认为"localhost",因此仅将值更改为
它现在应该是这样的:
1 | listen_addresses = '*' # what IP address(es) TO listen ON; |
您还可以检查下一个设置"端口",以确保正确连接。 5432是默认值,如果您没有指定,则是psql尝试连接的端口。
保存并关闭该文件,然后打开Client Authentication配置文件,该文件位于同一目录中:
1 | sudo [editor] /etc/postgresql/[version]/main/pg_hba.conf |
如果您想限制访问,我建议您阅读该文件,但对于基本的打开连接,您将跳转到文件的底部并添加如下所示的行:
1 | host ALL ALL ALL md5 |
如果您愿意,可以按Tab键而不是空格以将字段与现有列对齐。
就个人而言,我改为添加了一行如下所示:
1 | host [database_name] pi 192.168.1.0/24 md5 |
这会将连接限制为仅限一个用户和局域网子网上的一个数据库。
保存对文件的更改后,需要重新启动服务才能实现更改。
1 | sudo service postgresql restart |
现在,您可以使用以下命令检查以确保服务正在公开侦听正确的端口:
1 | sudo netstat -ltpn |
如果不以高架形式运行它(使用
其中一个进程应该是Postgres,本地地址应该是开放的(0.0.0.0)并且不限于仅本地流量(127.0.0.1)。如果它未打开,那么您需要仔细检查配置文件并重新启动服务。您可以再次确认该服务正在侦听正确的端口(默认为
最后,您将能够使用以下命令从远程计算机成功连接:
1 | psql -h [server ip address] -p [port NUMBER, optional IF 5432] -U [postgres USER name] [DATABASE name] |
确保在配置文件中正确应用了这些设置。
1 | vim /etc/postgresql/x.x/main/postgresql.conf |
请尝试以下操作查看日志并找到问题所在。
1 | tail /var/log/postgresql/postgresql-x.x-main.log |
以下帮助我对maco Mojave:
1 2 3 | $sudo mv /usr/LOCAL/var/postgres /usr/LOCAL/var/postgres.save $brew uninstall postgres $brew install postgres |
就我而言,我没有更改管理门户中的azure默认安全策略。原来是允许端口22,其余都被拒绝。只要我添加5432端口,一切都会变好。
我认为你使用的是机器名而不是主机的ip。
我尝试使用机器名称时遇到了同样的错误。因为,仅当客户端和主机位于同一网络且安装了相同的操作系统时才允许。