PostgreSql 连接访问控制
·
一、概述
PostgreSql 数据库安装完成后,再需要做一些配置,才可以正常访问。
一般需要修改 postgresql.conf,pg_hba.conf 配置文件,有其他特殊需求的,可能还需要修改 pg_ident.conf 配置文件。
二、配置文件修改
1)postgresql.conf 文件
数据库集簇安装部署完成后,要更改其中的监听地址,否则默认只监听数据库服务器本地 localhost 地址。
另外确保监听的端口号要通畅,不被防火墙或其他网络安全策略所限制,默认端口号 5432。
listen_addresses = '*'
port = 5866
2)pg_hba.conf 文件
数据库集簇安装部署完成后,默认只允许本地连接,且连接认证方式均为 trust,生产环境建议更改为 md5 连接认证方式,并根据需求增加允许访问的客户端地址。
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
host all all ::1/128 md5
local replication all md5
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
TYPE,数据库连接方式,有如下四种
- local:匹配使用Unix域套接字的连接,如果没有此类型的记录,则不允许使用Unix域套接字连接。
- host:匹配使用TCP/IP进行的连接,主机记录匹配SSL或非SSL连接,需要配置listen_addresses。
- hostssl:匹配使用TCP/IP进行的连接,仅限于使用SSL加密进行连接,需要配置ssl参数。
- hostnossl:匹配通过TCP/IP进行的连接,不使用SSL的连接。
DATABASE:指定哪些数据库可以被连接
- 匹配的数据库名称,all 指定它匹配所有数据库。
- 复制(replication)不指定数据库。
- 多个数据库可以用逗号分隔。
USER:指定哪些用户可以连接
- 匹配的数据库用户名,all 指定它匹配所有用户。
- 可以通过用逗号分隔来提供多个用户名。
ADDRESS:指定哪些IP地址可以连接
- 匹配的客户端计算机地址,all 匹配任何 IP 地址。
- 0.0.0.0/0 表示所有 IPv4 地址。
- :: 0/0 表示所有 IPv6 地址。
- 192.168.100.101/32 允许这个 ip 登录。
- 192.168.100.0/24 允许 19.168.100.0~192.168.100.255 网段登录数据库
METHOD:客户端认证方式
- trust:只要知道数据库用户名就不需要密码或ident就能登录,建议不要在生产环境中使用。
- scram-sha-256:密码认证,这是当前提供的方法中最安全的一种,但是旧的客户端库不支持这种方法。
- md5:是常用的密码认证方式,如果你不使用ident,最好使用md5。密码是以md5形式传送给数据库,较安全,且不需建立同名的操作系统用户。
- password:以明文密码传送给数据库,建议不要在生产环境中使用。
- ident:Linux下PostgreSQL默认的local认证方式,凡是能正确登录操作系统用户(注:不是数据库用户)就能使用本用户映射的数据库用户不需密码登录数据库。操作系统名,数据库用户名,数据库名一致。
- reject:拒绝认证,这对于从组中“过滤掉”某些主机非常有用。
修改完pg_hba.conf文件之后,需要重新加载配置,不用重启数据库:
--系统命令行执行
pg_ctl reload
或
--连入数据库执行
select pg_reload_conf();
3)pg_ident.conf 文件
数据库映射文件,ident 认证方式的扩展,标注操作系统用户与数据库用户的映射关系,配合pg_hba.conf 使用。
允许数据库服务器上指定的操作系统用户,使用指定的数据库用户,免密连入数据库。
pg_ident.conf 文件
# MAPNAME SYSTEM-USERNAME PG-USERNAME
ss aaa test
ss syd syd
pg_hba.conf 文件
# TYPE DATABASE USER ADDRESS METHOD
local all all ident map=ss
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
host all all ::1/128 md5
local replication all md5
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
- MAPNAME:映射名,自定义配置在 pg_hba.conf 文件中。
- SYSTEM-USERNAME:系统用户名。
- PG-USERNAME :数据库用户名。
示例:
--aaa 操作系统用户,使用 test 数据库用户,免密连入数据库。
[root@dj ~]# su - aaa
[aaa@dj ~]$ psql -U test
psql (12.4)
Type "help" for help.
test=> select user;
user
------
test
(1 row)
--syd 操作系统用户,使用 syd 数据库用户,免密连入数据库
[root@dj ~]# su - syd
[syd@dj ~]$ psql -U syd
psql (12.4)
Type "help" for help.
syd=> select user;
user
------
syd
(1 row)
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)