微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL访问控制,允许&禁止指定IP访问

Postgresql中允许哪些IP的机器能够访问数据库是由配置文件pg_hba.conf控制的,通过配置该文件,能够指定哪些ip可以访问,哪些ip不可以访问,以及访问的认证方式。hba是host-based authentication的缩写。

原文地址:
https://mytecdb.com/blogDetail.php?id=77

initdb在初始化数据目录的时候,会生成一个认的pg_hba.conf文件。pg_hba.conf文件格式由多条记录组成,每条记录占一行,#开头为注释,这些记录控制着客户端访问数据库的权限和认证方式。

先看一个Postgresql生成的pg_hba.conf文件示例,如下:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

1. 语法

local <dbname> <user> <auth-method> [auth-options]

host <dbname> <user> <ip/masklen> <auth-method> [auth-options]

例子:

本地socket连接
local all all trust

IPv4本地连接
host all all 127.0.0.1/32 trust

允许所有IP使用md5加密的口令访问
host all all 0.0.0.0/0 md5

2. 字段取值详解

2.1 第一个字段,主机类型
  • local,匹配本地socket方式连接数据库
  • host,匹配TCP/IP网络协议连接,包括SSL和非SSL
  • hostssl,匹配TCP/IP网络协议连接,必须是SSL加密的连接
  • hostnossl,匹配TCP/IP网络协议连接,必须非SSL加密的
2.2 第二个字段,数据库名称

一行记录的第二个字段,用于设置一个数据库名称,设置all表示可以匹配任何数据库,设置为replication表示允许流复制,而不是一个名叫“replication”的数据库

2.3 第三个字段,用户名

一行记录的第三个字段,表示一个用户名称,设置为all,匹配所有用户

2.4 第四个字段,IP地址

一行记录的第四个字段,<ip/masklen>表示允许哪些IP地址来访问,也可以匹配ip段,如192.168.56.0/24。配置为0.0.0.0/0 表示匹配任意IP。

2.5 第五个字段,认证方式

一行记录的第五个字段,表示验证方法,常用的有trust,reject,md5,ident等。

  • trust,无条件的允许连接,不需要密码或其他认证
  • reject,无条件的拒绝连接
  • md5,要求客户端提供一个MD5加密的口令进行认证
  • password,要求客户端提供一个未加密的口令进行认证
  • gss,用GSSAPI认证用户
  • sspi,用sspI认证用户
  • krb5,用Kerberos V5认证用户
  • ident,允许客户端上的特定操作系统用户连接到数据库
  • ldap,用LDAP服务器认证
  • radius,用RADIUS服务器认证
  • cert,用SSL客户端证书认证
  • pam,用操作系统提供的可插入认证模块服务(PAM)来认证
2.6 第六个字段,认证选项

一行记录的第六个字段,[auth-options] 表示认证选项,也可以不指定。


注:
修改pg_hba.conf配置文件后,需要重新加载生效。
service postgresql reload
或者
pg_ctl reload -D data_dir
或者
select pg_reload_conf();

LuciferV路西法 发布了14 篇原创文章 · 获赞 6 · 访问量 4万+ 私信 关注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐