设为首页 加入收藏

TOP

关于postgresql的安装与实用(二)
2014-11-24 00:04:36 来源: 作者: 【 】 浏览:74
Tags:关于 postgresql 安装 实用
记录,unix套接字连接将会被禁止。

host

这个记录匹配通过TCP/IP的进行的连接请求。host记录匹配SSL或者非SSL的连接 注意:除非服务器带着合适的listen_addresses 配置参数值启动,否则远程的TCP/IP将不能连接。因为缺省只监听本地回环地址localhost的TCP/IP连接。

hostssl

这个记录匹配通过TCP/IP进行的连接请求,但是只能使用SSL加密进行连接。要用这个选项,服务器必须要支持SSL。此外,当服务器启动的时候必须通过设置将SSL启用(参阅Section 17.9获取更多信息)

hostnossl

这个记录刚好与hostssl的逻辑相反;它只能匹配用TCP/IP但是不用SSL的连接。

database

指定记录匹配的数据库名。值all将匹配所有的数据库。值sameuser表示如果请求连接的数据库名和用户名相同,则匹配。值samegroup表示请求的用户必须是与数据库同名的组中的成员。(samegropu是一个过时的参数但是samerole的拼写方式仍旧被接受)。值replication表示如果一个replication的连接被请求,则匹配(注意:replication连接不需要指定任何特定的数据库)。在其他情况下,这就是一个特定的PostgreSQL 数据库的名字。我们可以通过用逗号分隔的方法声明多个数据库。一个包含数据库名的文件可以通过对在该文件前加@来声明。

user

为这条记录声明所匹配的PostgreSQL用户。值all表示匹配所有用户。否则,它就是特定的数据库用户的名字,组名字可以通过用+ 做组名字前缀来声明.(在PostgreSQL中这些并不是用户和组的真正区别;a+标识真实的意思是:“匹配任意一个在这个角色中直接的或者间接的成员”,当角色的名字没有用a+来表示,那么它只匹配这一个角色。)多个用户名只可以可以用逗号隔开。一个包含用户名的文件可以通过对在该文件前加@来声明。

address

声明这条记录匹配的客户端机器的地址。这个字段可以包含一个主机名、一个IP地址范围或者下面提到的特殊关键字。

一个IP地址是一个标准的CIDR 掩码长度的点分十进制的数。掩码长度表示客户端IP 地址必须匹配的高位二进制位数。在给出的IP 地址里,这个长度的右边的二进制位必须为零。在IP 地址,/,和CIDR 掩码长度之间不能有空白。

一个IP地址范围的典型例子可以用这种方法表示:172.20.143.89/32,这表示一个主机,或者用172.20.143.0/24表示一个小型网段,或者用10.6.0.0/16来表示一个大型网段。0.0.0.0/0表示所有IPV4的地,::/0表示所有IPV6的地址。要声明一个主机,给IPv4 地址声明CIDR 掩码32,给IPv6 地址声明128。在网络地址中,不要在尾部省略零点。

以IPv4 格式给出的IP地址会匹配那些拥有对应地址的IPv6 连接。例如:127.0.0.1将匹配IPV6的地址::ffff:127.0.0.1.以IPV6格式给出的地址只能匹配IPV6的连接,即使对应的地址在IPv4-in-IPv6 范围内。请注意如果系统的C类库不支持IPV6的地址,那么所有IPV6的连接将会被拒绝。 你也可以写成all来匹配所有IP地址。samehost值将匹配该服务器自己拥有的任意一个IP地址,或者用samenet值来匹配在这个服务器连接的网段里的任意一个IP地址。 如果声明一个主机名(不是一个IP地址或者一个将要指定的一个关键字作为主机名),该名称是相对于一个客户端的IP地址反向名称解析的结果(例如:DNS解析,如果DNS被启用)。主机名不区分大小写。如果记录被匹配,那么,在这个主机上将会主机名进行正解析(例如:DNS正解析),然后检查解析的地址是否和客户端的IP地址相同。如果两者匹配,那么这个记录将被匹配。(在pg_hba.conf文件中的主机名应当是这样一个名字:客户端IP用address-to-name解析返回的结果,否则,如果这一行不匹配,有些主机名数据库上允许一个IP地址绑定多个主机名,但是当解析IP地址的时候操作系统上只返回一个主机名)

声明一个主机域可以在主机名前面加.如.example.com将匹配foo.example.com(但不匹配example.com)

在pg_hba.conf中声明了一个主机名,你应该确保这个名字能够快速的解析。它能够建立一个本地命名缓存,如nscd。并且,你也可以启用log_hostname参数来查看客户端主机名和IP地址的替换日志。

有时,用户想知道为什么要使用两个名称互相解析这种看似很复杂的方式来解析主机名,而且还有需要反向解析IP地址,并且有时候主机名没有建立或指向一些不正确的主机名。这样主要是为了提高效率:一个连接将会请求两个解析器来解析当前客户端的地址。如果这个地址的解析器有问题,那么它只是客户端的问题。假设采取另一种方式,那么它不得不去解析在pg_hba.conf中出现的每一个主机名来尝试连接。这样将非常慢。而且如果一个主机名的解析器出现问题,那么这将导致所有主机都有问题.

并且,反向查找是为了实现后缀的匹配功能,因为需要知道实际的客户端主机名,以便它能进行模式匹配。

请注意这个方法和其他流行的基于主机名的访问控制是一致的,例如,Apache的HTTP服务器和TCP Wrappers。

此字段仅适用于主机,hostssl和hostnossl记录。

IP-address IP-mask

这个可以看作是CIDR-address的补充。它不是声明掩码的长度,而是在另外一个字段里声明实际的掩码。例如,255.0.0.0 表示IPv4 CIDR 掩码长度为8,255.255.255.255表示CIDR的掩码长度为32.

此字段仅适用于主机,hostssl和hostnossl记录。

auth-method

声明通过这条记录联接的时候使用的认证方法。可能的选项请看下面的内容,详细的信息请参阅Section 19.3。

trust

无条件的允许连接。这个方法允许任何人用任意一个PostgreSQL用户登录到PostgreSQL数据库。

reject

无条件的拒绝连接。这对于过滤一个组中的某些主机非常有用,例如,一个reject的行能够阻止一个指定的主机连接。而允许特定的网络中其他主机的连接。

md5

要求客户端提供一个MD5加密的口令进行认证。请查阅Section 19.3节获取详细的信息。

password

要求客户提供一个未加密的密码进行身份验证。因为口令是以明文形式在网络上传递的,所以我们不应该在不安全的网络上使用这个方式。请参阅Section 19.2.2 获取详细信息。

krb5

使用Kerberos V5来进行认证用户。这只对TCP/IP连接有效。请参阅Section 19.3.5获取详细信息。

ident

获取客户端的操作系统的用户名,然后联系客户端上的ident服务器并检查是否和要求的数据库用户名匹配。Ident认证只对TCP/IP连接有效。如果是本地连接,将会被peer认证方法替换。请参阅Section 19.3.6获取详细信息。

peer

从操作系统获取操作系统的用户名,然后检查它是否和请求的数据库名

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PostgreSQL代码整体结构(一) 下一篇PostgreSQL 安装问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: