美文网首页
PostgreSQL开放远程连接配置

PostgreSQL开放远程连接配置

作者: 南风落 | 来源:发表于2018-10-25 11:24 被阅读20次

      如果使用pg-ctl指令提示没有$PGDATA路径,或者启动的服务不对劲,可能是安装路径的问题。例如我是下载安装,路径是/Library/PostgreSQL/10/data,在使用指令的时候就要用-D把这个路径传进去。

      首要的问题就是开放对外的接口。这里需要配置data目录下的pg_hba.conf和postgresql.conf文件,让postgres监听外部的请求,而且允许通过md5方式验证。
      参考岬淢箫声的博文,配置代码:
    pg_hba.conf中添加验证方式

    # 0.0.0.0/0 是允许的IP段,md5是验证方式
    host    all    all    0.0.0.0/0        md5
    

    postgresql.conf中更改监听域

    # 原本若有#注释符要去掉,'*'表示接收所有
    listen_addresses='*'
    

      因为数据量太大转去了CentOS7后台跑代码,又多了一些问题。Python的问题之后再写文章,主要谈PostgreSQL
      CentOS下安装PostgreSQL的方法参见晓晨Master的文章,如果没有防火墙就不要管后半段。装完之后照例修改pg_hba.conf和postgresql.conf。以10为例,$PGDATA路径是

    /var/lib/pgsql/10/data
    

      SSH操作就用vi修改就行,但是CentOS7下配置文件的默认值不一样。如果注意观察会发现验证方式是Peer和Ident,而我们应该都改成md5。当然localhost不改都无所谓。
      之后重启服务,指令和之前有所不同

    systemctl restart postgresql-10
    

    到这里PostgreSQL就配置完成了,但是具体连接还遇到了一些问题,在这里记录一下。

    • 导入表问题
      我是直接连表带数据导入的,但是在执行.sql文件的时候没有指定数据库名,结果直接就导进默认数据库postgres去了,找了半天没找到。而且这样Python代码还得小改
    • NAT问题
      即使开了监听和验证,很多人还是连不上,但是他们的问题是自家的防火墙。然而查了半天我压根没开防火墙——防火墙不是一定有的
      那么就只能是我用的是虚拟机,毕竟SSH用的也不是22端口,肯定经过了NAT转换。NAT怎么配也很好查,然而并没用,因为主机不在我这。所以这个问题最后的解决是让师兄在主机上帮我配了一个端口转换,这次用的倒是iptables。

    相关文章

      网友评论

          本文标题:PostgreSQL开放远程连接配置

          本文链接:https://www.haomeiwen.com/subject/exjqtqtx.html