Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql &引用;psql:无法连接到服务器:连接被拒绝;连接到远程数据库时出错_Postgresql_Ubuntu_Psql_Centos7 - Fatal编程技术网

Postgresql &引用;psql:无法连接到服务器:连接被拒绝;连接到远程数据库时出错

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文件以包括 托管

我正在尝试使用以下命令连接到安装在远程服务器中的postgres数据库:

sudo netstat -ltpn
psql-h
host\U ip
-U
db\U用户名
-d
db\U名称

这是发生的错误:

psql:无法连接到服务器:连接被拒绝 服务器是否在主机“”上运行并接受 端口5432上的TCP/IP连接

  • Postgres安装的版本是9.4
  • 主机操作系统:Ubuntu 15.04
  • 客户端操作系统:Centos 7
  • 我已经尝试了以下方法,但问题仍未解决:

  • 已编辑
    pg_hba.conf
    文件以包括
  • 托管所有0.0.0.0/0 md5

  • 编辑了“postgresql.conf”,并将listen参数更改为
  • 侦听地址='*'

  • 重新启动postgres服务
  • 已禁用主机和客户端上的防火墙和iptables
  • 我通过在本地运行psql命令进行了检查,它成功了
  • 我尝试了本文给出的第二种解决方案。运行
    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