如果使用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。