2.4.6 装载客户端认证文件
注册完信号处理函数之后,将逐行读取data目录下的pg_hba.conf和pg_ident.conf两个配置文件的内容到链表变量中,以用于控制客户端认证。
其中,pg_hba.conf是基于主机认证的配置文件。pg_hba.conf文件的常用格式为每行一个记录。空白行将被忽略,#开头的注释也被忽略。一个记录是由若干用空格和/或制表符分隔的字段组成。如果字段用引号包围,那么它可以包含空白,记录不能跨行存在。每个记录声明一种连接类型、一个客户端IP地址范围(如果和连接类型相关的话)、一个数据库名、一个用户名字、对匹配这些参数的连接使用的认证方法。第一条匹配上的记录将用于执行认证。如果选择了一条记录而且认证失败,那么将不再考虑后面的记录。同时,如果没有匹配的记录,那么访问将被拒绝。
pg_ident.conf是基于身份(ident)认证的配置文件。当使用以身份为基础的认证时,在判断了初始化连接的操作系统用户名后,PostgreSQL判断该用户名是否可以以所请求的数据库用户的身份连接。这个判断是由跟在pg_hba.conf文件里的ident关键字后面的身份映射控制的。有一个预定义的身份映射是sameuser,表示任何操作系统用户都可以以同名数据库用户进行连接(如果后者存在的话),其他映射必须手工创建。非sameuser的身份映射定义在身份映射文件pg_ident.conf里。身份映射文件包含下面通用的格式:map-name ident-username database-usernamemap-name是在pg_hba.conf中引用这个映射的名称。另外两个域分别说明哪个操作系统用户被允许以哪个数据库用户的身份进行连接。同一个map-name可以重复用于在多个映射里声明更多的用户映射。操作系统用户和数据库用户之间的映射是多对多的关系,即一个操作系统用户可以映射为多个数据库用户,一个数据库用户也可以映射为多个操作系统用户。
【责任编辑:云霞 TEL:(010)68476606】