Postgresql &引用;psql:无法连接到服务器:连接被拒绝;连接到远程数据库时出错
我正在尝试使用以下命令连接到安装在远程服务器中的postgres数据库:Postgresql &引用;psql:无法连接到服务器:连接被拒绝;连接到远程数据库时出错,postgresql,ubuntu,psql,centos7,Postgresql,Ubuntu,Psql,Centos7,我正在尝试使用以下命令连接到安装在远程服务器中的postgres数据库: sudo netstat -ltpn psql-hhost\U ip-Udb\U用户名-ddb\U名称 这是发生的错误: psql:无法连接到服务器:连接被拒绝 服务器是否在主机“”上运行并接受 端口5432上的TCP/IP连接 Postgres安装的版本是9.4 主机操作系统:Ubuntu 15.04 客户端操作系统:Centos 7 我已经尝试了以下方法,但问题仍未解决: 已编辑pg_hba.conf文件以包括 托管
sudo netstat -ltpn
psql-hhost\U ip
-Udb\U用户名
-ddb\U名称
这是发生的错误:
psql:无法连接到服务器:连接被拒绝
服务器是否在主机“”上运行并接受
端口5432上的TCP/IP连接
pg_hba.conf
文件以包括nmap
为我提供了以下输出:启动Nmap 6.47(http://nmap.org )2015-09-07 18:08国际标准时间
10.17.250.250的Nmap扫描报告
主机启动(0.000004s延迟)。
未显示:997个关闭的端口
港口国服务
22/tcp开放ssh
25/tcp打开smtp
80/tcp开放式http
我错过了什么吗。希望有人能帮忙。检查
postgresql.conf
中定义的端口。我安装的postgres 9.4使用端口5433
而不是5432
我认为您使用的是机器名而不是主机的ip
当我尝试使用机器的名称时,我遇到了相同的错误。因为,只有当客户端和主机都在同一网络下并且安装了相同的操作系统时,才允许这样做
cd /etc/postgresql/9.x/main/
打开名为postgresql.conf的文件
sudo vi postgresql.conf
sudo vi pg_hba.conf
将此行添加到该文件中
listen_addresses = '*'
host all all 0.0.0.0/0 md5
然后打开名为pg_hba.conf的文件
sudo vi postgresql.conf
sudo vi pg_hba.conf
并将这一行添加到该文件中
listen_addresses = '*'
host all all 0.0.0.0/0 md5
它允许所有用户使用加密密码访问所有数据库
重新启动服务器
就我而言,我没有在管理门户中更改azure默认安全策略。原始端口22是允许的,其余端口都被拒绝。只要我添加5432端口,一切都会好起来。确保配置文件中的设置应用正确
vim /etc/postgresql/x.x/main/postgresql.conf
请尝试以下方法查看日志并找出您的问题
tail /var/log/postgresql/postgresql-x.x-main.log
当我试图远程连接到我的Raspberry Pi上新安装的PostgreSQL时,我遇到了这个问题。以下是我为解决此问题所做的全部工作:
首先,打开PostgreSQL配置文件,确保服务将在localhost之外侦听
sudo [editor] /etc/postgresql/[version]/main/postgresql.conf
我使用了nano
,但您可以使用自己选择的编辑器,虽然我安装了9.1版,但该目录将适用于您安装的任何版本
cd /etc/postgresql/9.x/main/
向下搜索标题为“连接和身份验证”的部分。第一个设置应该是“侦听地址”
,可能如下所示:
#listen_addresses = 'localhost' # what IP address(es) to listen on;
listen_addresses = '*' # what IP address(es) to listen on;
host all all all md5
host [database_name] pi 192.168.1.0/24 md5
右边的注释很好地说明了如何更改此字段,使用建议的'*'
for all将非常有效
请注意,此字段用#注释掉。根据注释,它将默认为“localhost”,因此仅将值更改为“*”
是不够的,您还需要通过删除前导的#
来取消对设置的注释
现在应该是这样的:
#listen_addresses = 'localhost' # what IP address(es) to listen on;
listen_addresses = '*' # what IP address(es) to listen on;
host all all all md5
host [database_name] pi 192.168.1.0/24 md5
您还可以检查下一个设置“端口”,以确保连接正确。5432是默认值,如果不指定端口,psql将尝试连接到该端口
保存并关闭该文件,然后打开客户端身份验证配置文件,该文件位于同一目录中:
sudo [editor] /etc/postgresql/[version]/main/pg_hba.conf
如果要限制访问,我建议您阅读该文件,但对于基本的开放连接,您将跳转到文件底部并添加如下行:
#listen_addresses = 'localhost' # what IP address(es) to listen on;
listen_addresses = '*' # what IP address(es) to listen on;
host all all all md5
host [database_name] pi 192.168.1.0/24 md5
如果愿意,可以按tab键而不是空格键将字段与现有列对齐
就我个人而言,我添加了一行如下所示:
#listen_addresses = 'localhost' # what IP address(es) to listen on;
listen_addresses = '*' # what IP address(es) to listen on;
host all all all md5
host [database_name] pi 192.168.1.0/24 md5
这将连接仅限于局域网子网上的一个用户和一个数据库
保存对文件的更改后,需要重新启动服务以实现更改
sudo service postgresql restart
现在,您可以使用以下命令检查以确保服务在正确的端口上公开侦听:
sudo netstat -ltpn
如果不将其作为提升运行(使用sudo
),它不会告诉您侦听这些端口的进程的名称
其中一个进程应该是Postgres,本地地址应该是开放的(0.0.0.0),而不仅仅限于本地流量(127.0.0.1)。如果它没有打开,那么您需要仔细检查配置文件并重新启动服务。您可以再次确认服务正在正确的端口上侦听(默认值为5432
,但您的配置可能不同)
最后,您将能够使用以下命令从远程计算机成功连接:
psql -h [server ip address] -p [port number, optional if 5432] -U [postgres user name] [database name]
以下内容帮助我了解了macos Mojave:
$sudo mv /usr/local/var/postgres /usr/local/var/postgres.save
$brew uninstall postgres
$brew install postgres
我遇到了完全相同的问题,配置文件是正确的。在我的例子中,问题来自我使用的Eduroam wifi:当我通过另一个wifi连接时,一切正常。至少在我的大学里,Eduroam似乎阻止了5432端口。如果你在Mac上尝试,我的很简单:
brew install postgres
这将告诉您是否已经安装,以及安装的版本,如果没有安装,请运行最新版本
brew upgrade postgresql
这将确保您最终安装了最新版本
brew services start postgresql
这将再次启动服务。我希望这对某人有所帮助。在postgresql.conf中查看端口并进行端口更改。我安装的postgres 9.4使用端口5431或5434而不是o