snail_aaa 发表于 2009-5-21 15:01:10

postgreSQL客户端认证

http://www.wohedb.com/db_html_doc/administrator_guide/adm_4_client_auth.htm
www.wohedb.com中文数据库管理系统   作者:闫华   postgres_fan@yahoo.com.cn

第四章 客户端认证




在PostgreSQL数据库中,客户端想建立一个数据库连接,除了要提供正确的数据库用户名和密码,还要通过数据库的认证。如果不能通过数据库的认证,客户端的连接请求将被拒绝。客户端认证是PostgreSQL独有的特性,其它的数据库如Oracle没有这个概念。认证基于客户端所在的主机的IP地址、数据库用户名和要连接的数据库名。

通常情况一个客户端必须满足三个条件才能建立数据库连接:(1)提供正确的数据库用户名和密码。(2)通过认证。(3)连接数据库的用户在被连接的数据库上有CONNECT权限。如果客户端的认证方式是trust,则不需要提供数据库用户的密码,只需要提供数据库用户的名称。



4.1 pg_hba.conf文件


    客户端认证的所有的配置信息都存放在文件pg_hba.conf中,该文件通常位于数据库文件所在的目录下。pg_hba.conf是一个普通的文本文件,该文件中每一行都是一条记录,以”#“打头的行被视为注释,将被忽略掉,空白行也会被忽略。每条记录由多个域构成,域之间用空格或制表符分开(Tab)。如果域的值含有空格,可以用引号将域的值引起来。单个记录不能跨行。

    记录有下面的两种格式,一种以local打头,另一种以host打头。以local 打头的记录用来对使用Unix domain socket连接数据库的客户端进行认证。 如果没有pg_hba.conf文件中没有local类型的记录,所有试图通过Unix domain socket连接数据库的请求都将被拒绝。以host打头的记录用来对使用TCP/IP协议连接数据库的客户端进行认证。



(1)localdatabase user auth-method

(2)host   database user CIDR-address auth-method



database

    表示该条记录匹配数据库名称。如果是all则匹配所有数据库。



User

    表示该条记录匹配的数据库用户名。如果是all则匹配所有的数据库用户。



CIDR-address

    表示该条记录匹配的客户端的IP地址的范围。它由一个标准的点分十进制表示的IP地址和一个CIDR掩码组成。 掩码的长度指明客户端IP地址必须匹配的高二进制位的个数。给定的IP地址的除去掩码长度指定的高二进制位以后剩下的二进制位必须是0。IP地址、符号“/“和CIDR掩码长度之间不能有任何空格。例如,CIDR地址172.20.143.89/32匹配单个主机172.20.143.89,172.20.143.0/24匹配所有IP地址以172.20.143打头的主机,10.6.0.0/16匹配所有以IP地址以10.6打头的主机,0.0.0.0/0匹配任何主机。如果只想匹配单个主机,对于IPV4,CIDR掩码长度应该是32,对于IPV6,CIDR掩码长度应该是128。





auth-method

表示匹配该条记录的连接请求的认证方法。它有四个取值,分别是trust、reject、md5和password。trust表示不需要提供密码就可以让客户端建立连接。reject表示不允许匹配该条记录的客户端建立连接。MD5表示客户端必须提供一个用MD5方法加密的密码。Password表示客户端必须提供一个没有加密的明文密码。



    下面是一些pg_hba.conf文件记录实例:

(1)下面的记录允许本机上的所有客户端通过UNIX domain socket连接数据库而且不需要提供密码

localallalltrust



(2)下面的记录允许任何远程机器上的客户端以任何数据库用户访问任何数据库,但是要提供数据库用户的密码

host    all      all0.0.0.0/0password



(3)下面的记录拒绝IP地址为192.168.12.10的客户端用PostgreSQL用户访问任何数据库

hostPostgreSQL   all192.168.12.10/32reject



4.2 注意事项


    数据库启动时会将pg_hba.conf文件读入到内存中,如果在数据库运行的过程中修改了该文件,可以通过命令pg_ctl reload通知数据库读入新的文件,新的配置文件一般会在一分钟以内生效,也可能要几分钟或更长的时间。

数据库在将pg_hba.conf文件读入到内存中时,不会校验文件中的记录的正确性。如果pg_hba.conf文件中有错误,该错误将在有客户端连接数据库时被检查出来,数据库日志中会有下面的提示信息:



日志:文件"/home/postgres_bin/database/postgresql.conf"中有句法错误,在第8行末尾的附近。

   

    数据库在收到客户端连接请求,在pg_hba.conf文件寻找与客户端匹配的认证记录时,总是以找到的第一条匹配的认证记录为准,pg_hba.conf文件中排在前面的认证记录比排在后面的认证记录的优先级高。如果pg_hba.conf文件中有两条记录匹配客户端连接请求,第一条记录拒绝客户端连接请求,第二条记录接受客户端连接请求,那么客户端连接请求将被拒绝。如果在pg_hba.conf文件中没有与客户端连接请求匹配的认证记录,该客户端连接请求也会被拒绝。
页: [1]
查看完整版本: postgreSQL客户端认证

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com