我在pg_hba.conf
中有以下几行。 Postgres已安装在Windows服务器上。
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
#host all all myip md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
我只允许从另一个公共IP地址进行连接。我该如何实现?一旦启用以上IP,Postgres就不会启动。
正在寻找一些指导。
答案 0 :(得分:0)
我在几台Windows服务器(Windows Server 2012 R2,Windows Server 2016)上运行postgres,作为在Apache tomcat Web服务器上运行的商业框架的一部分。本地连接工作正常。但是,我希望同一postgres服务器可用于同一服务器场中另一台服务器(Red Hat Enterprise Linux)上的另一框架(Cakephp)。在我升级到postgres 9之前,它一直都起作用。现在,我不得不升级到postgres10。无论我尝试什么,都失败了。 这是我为解决问题所做的工作: 查找您的本地postgres配置文件。在我的情况下,它们通常与postgres表空间位于同一目录中: d:\ PG10Data \ postgresql.conf。 该文件必须包含以下几行:
# - Connection Settings:
listen_addresses = '*' # what IP addresses/interfaces to listen on
port = 5432
下一个要修改的文件是pg_hba.conf(hba =基于主机的访问):
# TYPE DATABASE USER ADDRESS METHOD
# some sample entries:
# this will open UP ALL REMOTE IPv4 connections, do not open up permanently
host all all 0.0.0.0/0 md5
# only 1 database for 1 user from 1 IPv4 address:
host yourdatabasename yourusername 10.15.17.13/32 md5
# don not forget the "/32", otherwise the postgres server will not start up!
编辑这些文件后,重新启动postgres服务器。 您可以运行
netstat -a -n | findstr 5432
查看postgres侦听器是否正在运行。
您还可以从Windows命令提示符运行以下命令来测试连接性:
psql -Uyourusername -dyourdatabasename -p5432 -hlocalhost
这应该可以随时使用。下一级别将是使用计算机的本地IPv4地址。您可以通过
找到答案ipconfig
这将告诉您您的本地IPv4地址。在以下命令中使用它:
psql -Uyourusername -dyourdatabasename -p5432 -hyourlocalip
我的问题是,此命令失败。由于我直接在服务器上运行它,因此它不可能是本地Windows防火墙。
解决方案: 有第二个配置文件: d:\ PG10Data \ postgresql.auto.conf 该文件从下面两行开始不祥:
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command
它结束了:
listen_addresses = 'localhost'
当我通过psql作为postgres在本地登录时,尝试了ALTER SYSTEM命令,但没有成功。 最后,我厚颜无耻地将d:\ PG10Data \ postgresql.auto.conf中的条目更改为;
listen_addresses = '*'
宾果! postgres重新启动后,远程访问在两台Windows服务器上都像超级按钮一样工作。
N。 B.不要忘记Windows防火墙:打开端口5432进行远程访问。还要检查网络中是否没有防火墙,阻止从您的远程客户端访问端口5432的端口。
如果有人能够告诉我如何在不编辑postgresql.auto.conf的情况下更改参数,那将是很好的选择,但是至少我的两个框架(在本地和远程服务器上)都在工作。
答案 1 :(得分:0)
要打开端口5432,请编辑/Program Files/PostgreSQL/10/data/postgresql.conf
并更改
# Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
在/Program Files/PostgreSQL/10/data/pg_hba.conf
# IPv4 local connections:
host all all 0.0.0.0/0 md5
现在重新声明Postgres服务器使用cmd
pg_ctl -D "C:\Program Files\PostgreSQL\10\data" restart