PostgreSQL数据库远程衔接功效的开启[MySQL防范]
本文“PostgreSQL数据库远程衔接功效的开启[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
需求改正连个配置文件,默许位于 安装目录的data子文件夹下.
1.postgresql.conf
改正成监听全部ip地址的衔接恳求,以下:
listen_addresses = '*' www.110hack.com
2.pg_hda.conf
在末尾的地方增添一行,以下:
host all all 0.0.0.0/0 md5
关于pg_hda.conf的配置参数的注释:
当一个客户端利用与数据库服务器举行联接时,它声明它将以哪个 PostgreSQL 用户的名称举行联接, 就象我们登录一台 Unix 计算机一样.在 SQL 环境里, 活泼的数据库用户名决意数据库对象的各种拜候权限.因此,实际上我们要限制的是用户可以联接的数据库.
认证 是数据库服务器成立客户端的标识, 然后通过一些手段判断能否答应此客户端利用(大概运行这个客户端利用的用户)与它所要求的用户名举行联接的历程.
PostgreSQL 供应多种差别的客户端认证方法.认证某个特定客户端联接所利用的办法可以通过基于(客户端)的主机地址,数据库和用户的方法举行挑选; 一些认证办法还答应你通过用户名举行限制.
PostgreSQL 用户名在逻辑上是和服务器运行的操作系统用户名彼此独立的. 假如某个服务器的全部用户在那台服务器机械上也有帐号, 那么给数据库用户赋与操作系统用户名是有意义的.不过, 一个接纳远程拜候的服务器很有大概有很多没有本地操作系统帐号的用户, 因而在这种情形下数据库用户和操作系统用户名之间没必要有任何接洽.
pg_hba.conf 文件
客户端认证是由一个配置文件掌握的,普通其文件名是 pg_hba.conf, 存放在数据库集群的数据目录里. (HBA 的意思是 host-based authentication:基于主机的认证.) 在initdb初始化数据目录的时刻,它会安装一个缺省的文件. 不过我们也可以把认证配置文件放在别的地方;参阅 hba_file 配置参数. www.110hack.com
文件 pg_hba.conf 的常用格局是一套记录, 每行一条.空白行行被忽视,井号( # )开首的注释也被忽视. 一条记录是由若干用空格和/或 tab 脱离的字段构成. 假如字段用引号包抄,那么它可以包含空白.记录不能跨行存在.
每条记录声明一种联接范例,一个客户端 IP 地址范围(假如和联接范例相关的话),一个数据库名,一个用户名字, 以及对匹配这些参数的联接利用的认证办法. 第一条匹配联接范例,客户端地址和联接计划恳求的数据库名和用户名的记录将用于履行认证. 这个处理历程没有"超越"大概"回头"的说法:假如挑选了一条记录并且认证失利, 那么将不考虑背面的记录.假如没有匹配的记录,那么拜候将被回绝.
每条记录可以下面七种格局之一
local database user authentication-method [authentication-option]
host database user CIDR-address authentication-method [authentication-option]
hostssl database user CIDR-address authentication-method [authentication-option]
hostnossl database user CIDR-address authentication-method [authentication-option]
host database user IP-address IP-mask authentication-method [authentication-option]
hostssl database user IP-address IP-mask authentication-method [authentication-option]
hostnossl database user IP-address IP-mask authentication-method [authentication-option]
各个字段的含义以下:
local
这条记录匹配通过 Unix 域套接字举行的联接计划. 没有这种范例的记录,就不答应 Unix 域套接字的联接.
host
这条记录匹配通过 TCP/IP 举行的联接尝试. host 记录匹配 SSL 和非 SSL 的衔接恳求.
注意: 除非服务器带着符合的 listen_addresses 配置参数值启动,不然将不大概举行远程的 TCP/IP 衔接, 因为缺省的行为是只监听本地自环地址 localhost 的衔接.
hostssl
这条记录匹配利用 TCP/IP 的 SSL 联接计划. 但必须是利用 SSL 加密的联接.
要利用这个选项,制作服务器的时刻必须翻开 SSL 支持.并且在服务器启动的时刻, 必须SSL选项通过配置选项ssl翻开.
hostnossl
这个记录与 hostssl 有着正相反的逻辑: 它只匹配那些在 TCP/IP 上不利用 SSL 的衔接恳求.
database
声明记录所匹配的数据库.值 all 表明该记录匹配全部数据库, 值 sameuser表示假如被恳求的数据库和恳求的用户同名,则匹配. samegroup 表示恳求的用户必须是一个与数据库同名的组中的成员. 在其他情形里,这就是一个特定的 PostgreSQL 的名字. 我们可以通过用逗号脱离的办法声明多个数据库. 一个包含数据库名的文件可以通过对该文件前缀 @ 来声明. www.110hack.com
user
为这条记录声明所匹配的PostgreSQL用户.值 all 表明它匹配于全部用户. 不然,它就是特定 PostgreSQL 用户的名字.多个用户名可以通过用逗号脱离的办法声明.组名字可以通过用 + 做组名字前缀来声明. 一个包含用户名的文件可以通过在文件名前眼前缀 @ 来声明.该文件必须和 pg_hba.conf 在同一个目录.
CIDR-address
声明这条记录匹配的客户端机械的 IP 地址范围.它包含一个尺度的点分十进制的 IP 地址和一个 CIDR 掩码长度. (IP 地址只能用数值声明,不能用域大概主机名.) 掩码长度表示客户端 IP 地址必须匹配的高位二进制位数. 在给出的 IP 地址里,这个长度的右边的二进制位必须为零. 在 IP 地址,/,和 CIDR 掩码长度之间不能有空白.
典型的 CIDR 地址是 172.20.143.89/32,这表明一个主机, 大概 172.20.143.0/24 表示一个网络. 要声明单个主机,给 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 的格局将被回绝.
这个域只实用于 host,hostssl 和 hostnossl 记录.
IP-address
IP-mask
这些办法可以用于作为 CIDR-address 表示法的替补. 它不是声明掩码的长度,而是在别的一个字段里声明实际的掩码. 比方,255.0.0.0 表示 IPv4 CIDR 掩码长度 8,而 255.255.255.255 表示 CIDR 掩码长度 32. 一样的匹配逻辑将用于一个点分的 IP-mask.
这些字段只实用于 host, hostssl, 和 hostnossl 记录.
authentication-method(认证办法)
声明通过这条记录联接的时刻利用的认证办法. 大概的挑选在下面简介,
trust
无条件地答应联接.这个办法答应任何可以与PostgreSQL 数据库服务器联接的用户以他们盼望的肆意 PostgreSQL 数据库用户身份举行联接,而不需求口令.
reject
联接无条件回绝.常用于从一个组中"过滤"某些主机.
md5
要求客户端供应一个 MD5 加密的口令举行认证.
crypt
要求客户端供应一个 crypt() 加密的口令用于认证. 7.2 从前的客户端只能支持 crypt. 关于 7.2 以及今后的客户端,我们倡议利用 md5.
password
要求客户端供应一个未加密的口令举行认证. 因为口令是以明文情势在网络上传送的, 所以我们不该该在不安全的网络上利用这个方法. www.110hack.com
krb4
用 Kerberos V4 认证用户.只有在举行 TCP/IP 联接的时刻才能用. (译注:Kerberos,"克尔波洛斯",故希腊神话冥王哈得斯的多头看门狗. Kerberos 是 MIT 开辟出来的基与对称加密算法的认证协议和/或密钥交换办法. 其特点是需求两个差别用处的服务器,一个用于认证身份, 一个用于通道两头用户的密钥交换.同时 Kerberos 对网络时间同步要求对比高,以避免回放攻击,因此普通伴随 NTP 服务.)
krb5
用 Kerberos V5 认证用户.只有在举行 TCP/IP 联接的时刻才能用. (译注:Kerberos V5 是上面 V4 的改良,主如果不再依靠 DES 算法, 同时增添了一些新特点.)
ident
获得客户的操作系统名(关于 TCP/IP 联接,用户的身份是通过与运行在客户端上的 ident 服务器联接举行判断的,关于本地联接,它是从操作系统获得的.) 然后查抄一下,看看用户能否答应以要求的数据库用户举行联接, 办法是参照在 ident 关键字背面声明的映射.
pam
利用操作系统供应的可插入的认证模块服务 (Pluggable Authentication Modules) (PAM)来认证.
authentication-option
这个可选的字段的含义取决与挑选的认证办法.细节在下面.
用 @ 构造包含的文件是当作一列名字读取的, 这些名字可以用空白大概逗号脱离.注释用 # 引入, 就像在 pg_hba.conf 里那样,答应嵌套 @ 构造. 除非跟在 @ 背面的文件名是一个绝对途径,不然被当作与包含该文件的目录像对的途径.
因为认证时系统是为每个联接恳求次序查抄 pg_hba.conf 里的记录的,所以这些记录的次序是非常关键的. 普通,靠前的记录有对比严的联接匹配参数和对比弱的 认证办法,而靠后的记录有对比松的匹配参数和对比严的认证办法. 比方,我们普通都但愿对本地 TCP/IP 联接利用 trust 认证, 而对远端的 TCP/IP 联接要求口令.在这种情形下我们将 trust 认证办法用于来自 127.0.0.1 的联接,这条记录将呈目前答应更遍及的客户端 IP 地址的利用口令认证的记录前面.
在启动和主服务器进程( postmaster )收到SIGHUP 信号的时刻, 系统城市重新装载 pg_hba.conf 文件. 假如你在活泼的系统上编辑了该文件,你就需求用 kill 向 postmaster 发一个 SIGHUP信号,好让它重新读取该文件.
在 pg_hba.conf 记录的一些例子. 阅读下文理解差别认证办法的细节.
pg_hba.conf 记录的例子 www.110hack.com
# 答应在本机上的任何用户利用 Unix 域套接字(本地衔接的缺省)
# 以任何身份联接任何数据库
#
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust
# 和上面相同,但是利用的是自环的(loopback)TCP/IP 衔接
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 127.0.0.1/32 trust
# 和上面一行相同,但是用的是独立的掩码字段
#
# TYPE DATABASE USER IP-ADDRESS METHOD
host all all 127.0.0.1 255.255.255.255 trust
# 答应 IP 地址为 192.168.93.x 的任何主机与数据库
# "template1" 相连,用与他们在自己的主机上相同 ident 的用户名标识他自己
# (普通是他的 Unix 用户名)
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host template1 all 192.168.93.0/24 ident sameuser
# 答应来自主机 192.168.12.10 的用户与 "template1" 数据库联接,
# 只要该用户供应了在精确的口令.
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host template1 all 192.168.12.10/32 md5
# 假如前面没有别的 "host" 行,那么下面两行将回绝全部来自
# 192.168.54.1 的联接恳求 (因为前面的记录先匹配),
# 但是答应来自互联网上别的任何地方的有效的 Kerberos 5 认证的联接
# 零掩码表示不考虑主机 IP 的任何位.因此它匹配任何主机:
# TYPE DATABASE USER CIDR-ADDRESS METH
以上是“PostgreSQL数据库远程衔接功效的开启[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |