postgresql的pg_hba.conf

postgresql的pg_hba.conf

初识postgresql的时候,觉得它的连接认证真几把烦人。每次也都是直接在网上搜索复制,不求甚解。今天安装bucardo做双主复制的时候,又被这个连接认证搞的头疼。索性好好试验了一方,才发现网上根本就没人好好说过ident连接方式失败的原因,全是复制文。。。哎。

先贴上官方文档:https://www.postgresql.org/docs/10/auth-pg-hba-conf.html

在实际使用时候,通常只会用到下面这种格式:

首先需要知道的是,postgresql进行连接认证的时候是从pg_hba.conf文件中由上往下逐条匹配的,匹配到后就会再往下找了。

接下来讲一下常用的几个字段的含义。

TYPE

local,表示使用unix socket的连接。当然这么说其实我也是不清不楚的,但是只需要知道在本机使用psql不加-h参数属于local类型

host,表示使用ip进行的连接。注意使用host类型,必须开启postgres.conf中的listen_addresses项。本机使用psql加-h参数属于host类型,所有其他通过服务器ip进行连接的都属于host类型。

 

DATABASE

允许连接的数据库名,可以用逗号分隔多个数据库名。

all表示所有数据库。

replication表示该连接是用来进行流复制。

 

USER

用户名,多个用户可以用逗号隔开。

all表示所有用户。

 

ADDRESS

0.0.0.0/0代表所有IPv4地址,

::0/0代表所有IPv6地址,

172.20.143.89/32表示一个主机,

172.20.143.0/24表示一个网段。

 

METHOD

peer只用于local类型。表示使用当前的系统登录用户进行连接,并且要求postgresql库中必须有同名的用户。

ident,只用于host类型,有点类似于peer。表示使用从客户端的ident server获取当前用户进行连接,并且要求postgresql库中必须有同名用户。注意,千万别配置ident方式,因为一般系统是没有装这个ident server服务的!how to install ident server)你得到的只会是一个错误信息:”FATAL: Ident authentication failed for user xxx”

md5,使用密码进行连接(注意,默认的postgres用户是无密码的。所以想要用密码连接postgres用户,必须先设置它的密码

trust,无条件地允许连接

reject,拒绝连接

所以最常用的就是peer与md5方式。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注