在windows下安装好PostgreSql后,当作为服务时,有应用程序或者别的客户端需要访问刚刚安装的postgreSql往往都会出现验证不能通过的异常或者错误,这个原因就是PostgreSql会对连接上来的客户端的IP进行监听和验证。
在PostgreSql中有一个参数listen_addresses,主要监听需要连接的客户端的IP,默认为“*”,表示监听所有的IP地址,这个一般不需要去修改,除非有特别的需求。此外,就需要注意“pg_hba.conf”配置文件。此文件存在于安装目录下的data文件夹下。
下面解释下这个文件的常用的配置:
TYPE DATABASE USER ADDRESS METHOD
local database user auth-method [auth-options]
host database user address auth-method [auth-options]
hostssl database user address auth-method [auth-options]
hostnossl database user address auth-method [auth-options]
host database user IP-address IP-mask auth-method [auth-options]
hostssl database user IP-address IP-mask auth-method [auth-options]
hostnossl database user IP-address IP-mask auth-method [auth-options]
对于每一种TYPE这边不做一一介绍,主要介绍常用的配置TYPE=“host”的配置。
DATABASE指的是需要被访问的数据库名称,如果是特定的数据库名称,那么就是单指这个数据库,比如DATABASE=coms,指的是访问coms数据库时做客户端验证按照这条配置执行,但是除了制定的数据库就不能访问另外的数据库了,一般为了使用方便设置成ALL,表示可以访问所有的数据库;USER表示访问的用户名一般也是ALL,如果指定特定的用户那么意思跟DATABASE也是一样的。
METHOD意味着验证的方法,一般使用MD5,指的是md5加密的password的。
当然验证方法有很多,比如trust其表示无需验证无条件的Connect。
如password其指的是需要不加密的密码,如reject,gss,peer等等,在项目中应该用的比较多的是md5。
ADDRESS的配置至关重要,如127.0.0.1/32。
讨论在IPv4的情况下,
1. 10.18.36.13/32 表示子网掩码255.255.255.255,这个配置指的是允许10.18.36.13按照一定的盘配置要求连接操作。
2. 10.18.36.0/24 表示子网掩码255.255.255.0,这个配置指的是允许10.18.36.1到10.18.36.255的IP地址按照一定的配置要求连接操作。
3. 10.18.0.0/16 表示子网掩码255.255.0.0,这个配置指的是允许10.18.1.1到10.18.255.255的IP地址按照一定的配置要求连接操作
4. 10.0.0.0/8 表示子网掩码255.0.0.0,这个配置指的是允许10.1.1.1到10.255.255.255的IP地址按照一定的配置要求连接操作
5. 0.0.0.0/0表示所有的IP都可以连接访问。
当本地应用程序的JDBC配置文件配置的是一个具体的IP地址,比如是10.18.36.13,应用程序访问本地的数据,如果在pg_hba.conf只是配置了127.0.0.1/32的话那么照样是访问不了的,解决这种情况有两种方式:
A. 在JDBC配置文件中加具体的IP地址修改成localhost或者127.0.0.1;
在pg_hba.conf中添加这个IP的网段或者单个IP的 配置,如10.18.36.13/32.