PostgreSQL客户端验证

在windows下安装好Postgresql后,当作为服务时,有应用程序或者别的客户端需要访问刚刚安装的postgresql往往都会出现验证不能通过的异常或者错误,这个原因就是Postgresql会对连接上来的客户端的IP进行监听和验证。

在Postgresql中有一个参数listen_addresses,主要监听需要连接的客户端的IP,认为“*”,表示监听所有的IP地址,这个一般不需要去修改,除非有特别的需求。此外,就需要注意“pg_hba.conf”配置文件。此文件存在于安装目录下的data文件夹下。

下面解释下这个文件的常用的配置:

TYPE DATABASE USER ADDRESSMETHOD

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-maskauth-method [auth-options]

hostssl database user IP-address IP-maskauth-method [auth-options]

hostnossl database user IP-address IP-maskauth-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.

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...