PostgreSQL04-配置文件
全局配置文件
postgresql.conf 配置文件主要负责配置文件位置、资源限制、集群复制等
pg_hba.conf 文件则负责客户端的连接和认证
pg_hba.conf详解
TYPE(允许的连接方式)
local:使用Unix域套接字连接
host:匹配使用TCP/IP建立的连接,同时匹配SSL和非SSL连接。默认安装只监听本地环回地址localhost的连接 ,不允许使用TCP/IP远程连接,启用远程连接需要修改postgresql.conf中的listen_addresses参数
hostssl:匹配必须是使用SSL的TCP/IP连接。配置hostssl有三个前提条件:
1.客户端和服务端都安装OpenSSL;
2.编译PostgreSQL的时候指定configure参数--with-openssl打开SSL支持;
3.在postgresql.conf中配置ssl=on
hostnossl:和hostssl相反,它只匹配使用非SSL的TCP/IP连接
DATABASE(目标数据库名)
数据库名,可以是"all", "sameuser", "samerole", "replication"。all表示所有,但不包括replication。多个数据库用“,”隔开
USER(目标用户名)
用户名,可以为"all",表示所有,也可以具体指定一个用户。多个用户用“,”隔开
ADDRESS(IP地址和掩码)
可以是一个主机名,或者IP+掩码。掩码0-32(IPv4)或者0-128(IPv6)
主机名以“.”开头。samehost可以匹配所有主机、samenet可以匹配同一个掩码内的所有主机。
192.168.10.122/32表示单一主机,
192.168.10.0/24表示10网段的所有主机
0.0.0.0/0表示所有主机。
METHOD(认证方法)
密码加密策略,password表示以明文方式发送密码,md5和scram-sha-256会以对应的方式加密再发送密码。
修改postgresql.conf
通过alter system命令修改全局配置文件
命令会自动修改postgresql.auto.conf文件,数据库启动时会加载该文件,并覆盖postgresql.conf
alter system set listen_addresses = "*";
非全局配置文件的修改
设置和重置 Database 级别的配置
ALTER DATABASE name SET config_parameter { TO | = } { value | DEFAULT }
ALTER DATABASE name RESET configuration
设置和重置 Session 级别的配置
通过 SET 命令设置当前 Session 的配置
SET config_parameter { TO | = } { value | DEFAULT }
SET config_parameter TO DEFAULT;
更新 pg_settings 视图
UPDATE pg_settings SET setting = new_value WHERE name = 'config_parameter';
UPDATE pg_settings SET setting = reset_val WHERE name = 'config_parameter';
使用 set_config 函数更新会话配置
SELECT set_config('configparameter', new_value, false);
设置和重置 Role 级别的配置
ALTER ROLE name IN DATABASE database_name SET config_parameter { TO | = } { value | DEFAULT }
ALTER ROLE name IN DATABASE database_name RESET config_parameter
查看配置
SELECT name,setting FROM pg_settings where name ~ 'xxxx';
SELECT current_setting('name');
show all;
配置生效
如果是不需要重启的参数,reload 一次就可以生效
select pg_reload_conf();
或
/opt/pgsql/bin/pgctl -D /pgdata/10/data reload
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)