西安企业网站,站长之家源码,百度是网站吗,网站建设和维护怎么学作者#xff1a;IT邦德
中国DBA联盟(ACDU)成员#xff0c;10余年DBA工作经验#xff0c;
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主#xff0c;全网粉丝10万
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复#xff0c;
安装迁移#xff0c;性能优化、故障…
作者IT邦德
中国DBA联盟(ACDU)成员10余年DBA工作经验
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主全网粉丝10万
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复
安装迁移性能优化、故障应急处理微信:jem_db
QQ交流群:587159446
公众号IT邦德文章目录 前言 1.DBA那些辛酸的过往 2.安全加固插件passwordcheck插件✨ 2.1 修改规则✨ 2.2 编译passwordcheck✨ 2.3 测试检查 3.审计插件pgaudit插件✨ 3.1 pgaudit安装✨ 3.2 开启审计 4.远程访问插件postgres_fdw插件✨ 4.1 创建安装插件✨ 4.2 权限配置✨ 4.3 创建外部服务✨ 4.4 创建映射用户✨ 4.5 创建外部表 5.推荐插件 6.总结 前言 PostgreSQL运维的使用总结只谈使用经验不聊原理 1.DBA那些辛酸的过往
数据库问题排查一天被 Diss 排查问题慢......
核心表误删除数据手足无措看是哪个家伙写的竟然是...
客户线上部署PG应该如何完善体系化让客户dis吗
故障排查问题还没有找到头顶的灯却早已照亮了整层楼......
PostgreSQL运维一些必要的插件安装是非常重要的2.安全加固插件
passwordcheck插件 PostgreSQL数据库密码复杂度设置可以通过安装passwordcheck扩展插件来实现该插件默认的密码复杂度规则是密码长度必须大于等于8、必须包含字母和非字母、密码不能包含用户名。如果这些规则仍然不能满足你的密码强度要求那么还可以安装cracklib以及字典来提高密码强度。 ✨ 2.1 修改规则 默认密码复杂度规则 1.密码长度必须大于等于8 2.必须包含字母和非字母 3.密码不能包含用户名 可根据实际需要更改最小密码长度默认值为8 建议更改为10或更大。 注意此处的#号并非注释不要去掉。 cd /pgccc/soft/postgresql-15.6/contrib/
cd passwordcheck
编辑修改passwordcheck.c文件中的MIN_PWD_LENGTH/* passwords shorter than this
will be rejected */
#define MIN_PWD_LENGTH 10✨ 2.2 编译passwordcheck –使用make命令编译安装插件。 cd /pgccc/soft/postgresql-15.6/contrib/passwordcheck make make install ✨ 2.3 测试检查 –修改参数 alter system set shared_preload_libraries‘passwordcheck’; –重启PG pg_ctl restart –密码校验 postgres# ALTER USER postgres WITH PASSWORD ‘postgres’; ERROR: password is too short postgres# create user pgtest password ‘pgtest1234’; ERROR: password must not contain user name postgres# create user pgtest password ‘pg12345678’; CREATE ROLE 3.审计插件
pgaudit插件 能够提供详细的会话和对象审计日志是PG的一个扩展插件。pgAudit通过标准PostgreSQL日志记录工具提供详细的会话和/或对象审核日志记录。 ✨ 3.1 pgaudit安装
官网
https://www.pgaudit.org/下载安装包一定要注意pgaudit与PG版本的对应
wget https://codeload.github.com/pgaudit/pgaudit/tar.gz/refs/tags/1.6.2 -O pgaudit-1.6.2.tar.gztar -xzvf 1.6.2.tar.gz
cd pgaudit-1.6.2/
make install USE_PGXS1安装插件
alter system set shared_preload_librariespgaudit;
pg_ctl restart
create extension pgaudit;
\dx
select name,setting from pg_settings where name like pgaudit%;
select * from pg_available_extensions where name like %audit%;
show shared_preload_libraries;✨ 3.2 开启审计 1.会话审计日志记录 会话审计日志提供用户在后端执行的所有语句的详细日志。 使用pgaudit.log设置启用会话日志记录。 set pgaudit.log ‘write, ddl’; set pgaudit.log_relation on; set pgaudit.log_clienton; SELECT pg_reload_conf(); select name,setting,source from pg_settings where name like ‘pgaudit%’; postgres create table t_jeames(id int); postgres insert into t_jeames select generate_series(1,10000); postgres delete from t_jeames; postgres# drop table t_jeames; 2.对象审计日志记录 通过创建role 来实现 原理就是把想要审计的对象的具体操作赋权给一个 role 然后在设置 pgaudit.role 。 目前只能支持 SELECT, INSERT, UPDATE and DELETE 这4中类型 相对于 read, write 来说更细粒度了 –创建角色: audit_account create role audit_account password ‘audit_account’; 设置对象 t_jeames 的insert, update, delete.select 为审计行为 postgres# alter system set pgaudit.role ‘audit_account’; postgres# grant select,insert,update,delete on t_jeames to audit_account; postgres# select pg_reload_conf(); –修改数据 postgres# delete from t_jeames where id 5000; postgres# update t_jeames set id 1000 id ; postgres# select * from t_jeames limit 2; 4.远程访问插件
postgres_fdw插件 通过 postgres_fdw访问远程PostgreSQL数据库表。 步骤如下 1.在源端本地库创建 postgres_fdw 插件 2.创建 foreign server 外部服务(即指连接外部数据源的连接信息) 3.创建映射用户映射用户指定了访问外部表的本地用户和远程用户信息 4.创建外部表外部表的表定义建议和远端表结构一致 ✨ 4.1 创建安装插件 本地库做如下的操作 –编译安装 [postgrescentos79 ~]$ cd /pgccc/soft/postgresql-15.6/contrib [postgrescentos79 contrib]$ cd postgres_fdw [postgrescentos79 postgres_fdw]$ make install –再次确认插件 [rootcentos79 ~]# cd /pgccc/pgsql-15/share/extension –postgres 超级用户登录 PostgreSQL [postgrescentos79 ~]$ psql postgres# CREATE EXTENSION postgres_fdw; postgres# \dx ✨ 4.2 权限配置 本地库做如下的操作 若使用超级用户使用postgres_fdw可以跳过 普通用户使用postgres_fdw需要单独授权 GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO pgtest; ✨ 4.3 创建外部服务 本地库做如下的操作 外部服务定义了远端PostgreSQL数据库的IP、端口、数据库连接信息 CREATE SERVER fdwpg2 FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host ‘pg2host’, port ‘5432’, dbname ‘devdb’); ✨ 4.4 创建映射用户 本地库做如下的操作 映射用户指定了连接源端 PostgreSQL 数据库的用户名和密码信息 CREATE USER MAPPING FOR pgtest SERVER fdwpg2 OPTIONS (user ‘pg2user’, password ‘pg2user’); FOR:配置的用户为本地的数据库用户 OPTIONS 配置的是远端PostgreSQL数据库的用户和密码 ✨ 4.5 创建外部表
--远端数据库创建测试表
CREATE TABLE pg2_fdw (id int4 ,info text) ;
INSERT INTO pg2_fdw (id , info ) VALUES (1, a),(2, b);---创建外部表(本地库)
CREATE FOREIGN TABLE ft_fdw (
id int4,
info text
) SERVER fdwpg2 OPTIONS (schema_name pg2user, table_name pg2_fdw);通过外部表访问远端数据表
注意远端数据库pg_hba.conf文件需要允许本地库访问策略
select * from pg2_fdw;5.推荐插件 6.总结 PostgreSQL 提供使用 extension 的方式来扩展数据库的功能,您可以发现PostgreSQL的许多功能也都通过插件的形式完成也正是由于使用的插件的形式使得这些插件功能基本不受PostgreSQL核心升级的影响这也是PostgreSQL数据库能够持续发展的一个重要的原因