控制访问来源
pg_hba.conf :基于主机的访问配置文件
postgresql.conf:配置监听地址和端口
pg_ident.conf 基于操作系统用户的认证方式
unix_socket_directories 配置文件中配置sock文件位置。
启动监听
postgres=# alter system set listen_addresses='*';
ALTER SYSTEM
*号可以是具体的IP地址,默认是以localhost作为监听地址,如果有多个IP地址存在,使用逗号进行分割
需要重启数据库生效
也可以直接修改postgresql.conf配置文件,然后重启数据库生效
配置监听端口
postgres=# alter system set port='5434';
ALTER SYSTEM
alter system会写入文件postgresql.auto.conf
需要重启数据库生效
也可以直接修改postgresql.conf配置文件,然后重启数据库生效
访问规则配置
假设配置所有的ip地址来源都可以访问数据库实例
pg_hda.conf中的访问条目格式:
host database user address method
host:表示采用什么类型(host,hostssl,hostnossl,localhost)
database:允许登录的数据库
user:哪些用户可以登录数据库
address:哪些主机,哪些IP可以连接数据库实例
method:认证方式()
METHOD can be "trust", "reject", "md5", "password", "scram-sha-256",
"gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert".
Note that "password" sends passwords in clear text; "md5" or
"scram-sha-256" are preferred since they send encrypted passwords.
trust:登录数据库不需要任何密码
password:明文密码传输
md5 | scram-sha-256:密码传输时候加密
其中ident 搭配pg_ident.conf使用
查看数据库的加密方式:
postgres=# show password_encryption;
password_encryption
---------------------
scram-sha-256
(1 row)
[postgres@postgresDB pgdata1]$ cat pg_hba.conf |grep -i 0.0.0
host all all 0.0.0.0/0 trust
修改pg_hba.conf文件后,需要重新加载配置文件
客户端应用程序:pg_ctl reload -D /pgdata/pgdata
数据库内置函数:select pg_reload_conf()
注意:
如果客户端认证采用scram-sha-256的认证方式,那么数据库中的用户密码必须使用scram-sha-256的加密字符串,否则认证失败
如果客户端认证用md5,那么即使数据库中的用户密码是scram-sha-256,也不会影响认证。
数据库中查看pg_hba.conf配置规则
postgres=# select * from pg_hba_file_rules ;