我学会了用插件来辅助PostgreSQL,可拷,很刑!

作者: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_PGXS=1安装插件
alter system set shared_preload_libraries='pgaudit';
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_client=on;
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 创建安装插件

本地库做如下的操作:
–编译安装
[postgres@centos79 ~]$ cd /pgccc/soft/postgresql-15.6/contrib
[postgres@centos79 contrib]$ cd postgres_fdw
[postgres@centos79 postgres_fdw]$ make install
–再次确认插件
[root@centos79 ~]# cd /pgccc/pgsql-15/share/extension

–postgres 超级用户登录 PostgreSQL
[postgres@centos79 ~]$ 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数据库能够持续发展的一个重要的原因

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯省赛真题44】python计算N+N的值 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

目录 python计算NN的值 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python计算NN的值 第十四届蓝桥杯青少年组python省赛真题 一、题目要求…

【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)

背景需求&#xff1a; 【教学类-58-04】黑白三角拼图04&#xff08;2-10宫格&#xff0c;每个宫格随机1张-6张&#xff0c;带空格纸&#xff0c;1页6张黑白&#xff0c;1张6张白卡&#xff09;-CSDN博客文章浏览阅读582次&#xff0c;点赞16次&#xff0c;收藏3次。【教学类-58…

Mac安装pytorch

先下载 Anaconda | The Operating System for AI 网速慢&#xff0c;用中国大陆镜像&#xff1a;NJU Mirror 之前装python3时用的是pip3&#xff0c;这里说一下这pip与conda的区别 Conda和pip都是Python包管理工具&#xff0c;用于安装和管理Python包 包管理范围&#xff1a…

汽车数据应用构想(一)

自从电动汽车GB/T32960标准颁布&#xff0c;要求所有电动汽车必须上传数据开始&#xff0c;各车厂就开始花费大量的人力物力&#xff0c;用于数据的上传与存储。同时随着智能化、网联化的趋势&#xff0c;不断丰富上传数据的内容与数量。数据已成为车厂的重要资产&#xff0c;但…

微服务:eureka的搭建,以及服务注册、服务发现、负载均衡

eureka 搭建 新建一个Module,maven项目&#xff0c;导入依赖。 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><…

24年湖南教资认定即将开始,别被照片卡审!

24年湖南教资认定即将开始&#xff0c;别被照片卡审&#xff01;

Jenkins 流水线(Pipeline)详解

大家好&#xff0c;Jenkins 流水线&#xff08;Pipeline&#xff09;是一种可编排的持续集成和交付&#xff08;CI/CD&#xff09;方法&#xff0c;它以代码的方式定义整个软件开发过程中的构建、测试和部署流程。接下来就跟大家分享一下Jenkins 流水线&#xff08;Pipeline&am…

2024年5月26日 (周日) 叶子游戏新闻

资深开发者&#xff1a;3A游戏当前处于一种尴尬的中间地带游戏行业整体&#xff0c;尤其是3A游戏正处于艰难时期。尽管2023年3A游戏佳作频出&#xff0c;广受好评&#xff0c;但居高不下的游戏开发成本&#xff08;传闻《漫威蜘蛛侠2》的制作成本高达3亿美元&#xff09;正严重…

【机器学习结合AI绘画工具】——开启艺术创作的新纪元

目录 一、AI绘画工具的发展历程 二、AI绘画工具的技术原理 实例说明 三、AI绘画工具在艺术创作中的应用 实例网站 四、AI绘画工具的影响与未来展望 结论 机器学习和人工智能&#xff08;AI&#xff09;在过去的十年里取得了显著的进展。特别是在艺术创作领域&#xff0c…

excel表格写存神器--xlwt

原文链接&#xff1a;http://www.juzicode.com/python-tutorial-xlwt-excel 在 Python进阶教程m2d–xlrd读excel 中我们介绍了Excel表格的读取模块xlrd&#xff0c;今天这篇文章带大家了解Excel表格写存模块xlwt。他俩名字相近都以Excel的简写xl开头&#xff0c;rd是read的简写…

Java顺序表

Java顺序表 前言一、线性表介绍常见线性表总结图解 二、顺序表概念顺序表的分类顺序表的实现throw具体代码 三、顺序表会出现的问题 前言 推荐一个网站给想要了解或者学习人工智能知识的读者&#xff0c;这个网站里内容讲解通俗易懂且风趣幽默&#xff0c;对我帮助很大。我想与…

春秋云境CVE-2018-20604

简介 雷风影视CMS是一款采用PHP基于THINKPHP3.2.3框架开发&#xff0c;适合各类视频、影视网站的影视内容管理程序&#xff0c;该CMS存在缺陷&#xff0c;可以通过 admin.php?s/Template/edit/path/*web*..*..*..*..*1.txt 的方式读取任意文件。 正文 1.进入靶场 2./admin…

【数据结构】二叉树-堆(上)

个人主页~ 二叉树-堆 一、树的概念及结构1、概念2、相关概念3、树的表示4、树的实际应用 二、二叉树的概念和结构1、概念2、特殊二叉树3、二叉树的性质4、二叉树的存储结构&#xff08;1&#xff09;顺序存储&#xff08;2&#xff09;链式存储 三、二叉树的顺序结构以及实现1、…

【C++】——入门基础知识超详解

目录 ​编辑 1.C关键字 2. 命名空间 2.1 命名空间定义 2.2 命名空间使用 命名空间的使用有三种方式&#xff1a; 注意事项 3. C输入&输出 示例 1&#xff1a;基本输入输出 示例 2&#xff1a;读取多个值 示例 3&#xff1a;处理字符串输入 示例 4&#xff1a;读…

Python并发编程大揭秘:打造你的多任务处理超能战队!

今天给大家带来的是学习如何构建一个能够同时处理海量任务的超级团队。从简单的线程和锁&#xff0c;到复杂的异步IO和多进程部署&#xff0c;每一个工具都像是你团队中的一员&#xff0c;各有所长&#xff0c;共同协作&#xff01; 文章目录 Python进阶之并发和并行编程详解1.…

【Linux-INPUT输入的子系统】

Linux-INPUT输入的子系统 ■ input 子系统简介■ input 驱动编写流程■ ■ input 子系统简介 input 子系统就是管理输入的子系统&#xff0c; input 子系统分为 input 驱动层、 input 核心层、 input 事件处理层&#xff0c;最终给用户空间提供可访问的设备节点 ■ input 驱…

React类组件生命周期详解

在React的类组件中&#xff0c;从组件创建到组件被挂载到页面中&#xff0c;这个过程react存在一系列的生命周期函数&#xff0c;最主要的生命周期函数是componentDidMount、componentDidUpdate、componentWillUnmount 生命周期图例如下 1. componentDidMount组件挂载 如果你…

S1E45:单链表1 课后作业

测试题&#xff1a;0. 相比起数组来说&#xff0c;单链表具有哪些优势呢&#xff1f; 答&#xff1a;长度非固定&#xff0c;可以申请添加长度 答案&#xff1a;对于数组来说&#xff0c;随机插入或者删除其中间的某一个元素&#xff0c;都是需要大量的移动操作&#xff0c;而…

网络攻击攻击之-远程命令执行/RCE告警运营分析篇

在各种网络安全产品的告警中,远程命令执行是一种非常常见的告警。本文将从远程命令执行的定义,远程命令执行利用的流量数据包示例,远程命令执行的suricata规则,远程命令执行的告分析警研判,远程命令执行的处置建议等几个方面阐述如何通过IDS/NDR,态势感知等流量平台的远程…

深入解析RPC技术:原理、实现与应用

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种计算机通信协议&#xff0c;允许一个程序&#xff08;客户端&#xff09;在本地调用另一个程序&#xff08;服务器&#xff09;中的函数或方法&#xff0c;并获取返回结果&#xff0c;就像调用…