当前位置: 首页 > news >正文

PostgreSQL 17新特性之登录事件触发器

PostgreSQL 9.3 就提供了事件触发器功能,可以基于 DDL 语句触发相应的操作。

正在开发中的 PostgreSQL 17 增加了基于登录事件的触发器,可以在用户登录时执行某些检查或者特定操作。登录事件触发器的使用方法和其他触发器一样:创建一个返回 event_trigger 的函数,然后基于 login 事件创建一个事件触发器。

例如,以下函数返回了一个 event_trigger 对象:

CREATE OR REPLACE FUNCTION login_validate() 
RETURNS event_trigger
LANGUAGE plpgsql 
AS $$
DECLARE
BEGINIF session_user <> 'postgres' and current_time not between '09:00:00' and '18:00:00' THENraise exception '非工作时间只允许超级用户postgres登录!';END IF;raise log '用户登录成功:%', session_user;
END;
$$;

然后创建一个登录事件触发器:

CREATE EVENT TRIGGER login_validateON loginEXECUTE FUNCTION login_validate();

使用 postgres 用户可以正常登录:

psql -U postgres -W -d testdb -X -c 'select 1'?column?|
--------+1|

此时,我们可以在日志文件中看到以下信息:

2023-10-25 21:44:37.949 CST [8308] 日志: 用户登录:postgres
2023-10-25 21:44:37.949 CST [8308] 上下文: PL/pgSQL function login_validate() line 7 at RAISE
2023-10-25 21:44:37.949 CST [8308] 日志:  duration: 0.200 ms  statement: select 1

如果使用其他账号登录:

psql -U tony -d -W testdb -X -c 'select 1'
psql: error: connection TO server ON socket "/tmp/.s.PGSQL.5432" failed: FATAL:  非工作时间只允许超级用户postgres登录!
CONTEXT:  PL/pgSQL FUNCTION login_validate() line 5 at RAISE

同时,日志文件也会打印类似信息。

除了禁止登录之外,我们也可以记录所有用户登录信息,用于审计。

为了避免数据库没有登录触发器时不必要的时间消耗,同时增加了一个 pg_database.dathasloginevt 标识,记录数据库是否存在有效的登录触发器。当我们执行 CREATE/ALTER EVENT TRIGGER 语句时会设置这个标识,连接时如果没有发现有效的登录触发器就取消设置。

相关文章:

PostgreSQL 17新特性之登录事件触发器

PostgreSQL 9.3 就提供了事件触发器功能&#xff0c;可以基于 DDL 语句触发相应的操作。 正在开发中的 PostgreSQL 17 增加了基于登录事件的触发器&#xff0c;可以在用户登录时执行某些检查或者特定操作。登录事件触发器的使用方法和其他触发器一样&#xff1a;创建一个返回 …...

Docker 搭建 LNMP + Wordpress

[TOC](Docker 搭建 LNMP Wordpress 一、项目介绍1.1、项目环境1.2、 服务器环境1.3、 任务需求 二、部署Nginx2.1、建立工作目录2.2、 编写 Dockerfile 脚本2.3、准备 nginx.conf 配置文件2.4、生成镜像2.5、创建自定义网络 三、部署Mysql3.1、建立工作目录3.2、编写 Dockerfi…...

大数据调度最佳实践 | 从Airflow迁移到Apache DolphinScheduler

迁移背景 有部分用户原来是使用 Airflow 作为调度系统的&#xff0c;但是由于 Airflow 只能通过代码来定义工作流&#xff0c;并且没有对资源、项目的粒度划分&#xff0c;导致在部分需要较强权限控制的场景下不能很好的贴合客户需求&#xff0c;所以部分用户需要将调度系统从…...

node实战——搭建带swagger接口文档的后端koa项目(node后端就业储备知识)

文章目录 ⭐前言⭐初始化项目⭐配置router目录自动扫描路由⭐swagger文件配置自动生成json文件⭐封装扫描目录路由加入swagger⭐配置项目入口总文件⭐运行效果⭐总结⭐结束⭐前言 大家好,我是yma16,本文分享关于node实战——搭建带swagger接口文档的后端koa项目(node后端就…...

Qt篇——子控件QLayoutItem与实际控件的强转

方法&#xff1a;使用qobject_cast<QLabel*>() &#xff0c;将通过itemAt(i)获取到的子控件(QLayoutItem)强转为子控件的实际类型(如QLineEdit、QLabel等)。 场景举例&#xff1a; QLabel *label qobject_cast<QLabel*>(ui->horizontalLayout_40->itemAt(0…...

Css3使用

CSS3是CSS&#xff08;层叠样式表&#xff09;的最新版本&#xff0c;它引入了许多新特性&#xff0c;使网页设计更加灵活和富有创意。在本文中&#xff0c;我们将介绍CSS3的一些新特性&#xff0c;包括选择器、布局、动画和变形效果。 一、选择器 CSS3引入了一些新的选择器&…...

【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构

完全解耦的时间片轮询框架构 简介项目代码timeslice.htimeslice.clist.hlist.c 创建工程移植代码实验函数说明timeslice_task_inittimeslice_task_addtimeslice_tak_deltimeslice_get_task_num 结尾 简介 timeslice是一个时间片轮询框架&#xff0c;他是一个完全解耦的时间片轮…...

人工智能期末考试(刷题篇部分题有答案)

参考&#xff1a; 人工智能 经典考试试题及答案 - 百度文库 大学人工智能期末考试题库 - 百度文库 人工智能【期末复习题】 - 百度文库 人工智能期末试题及答案完整版 - 百度文库 一、选择题 AI的缩写是 Artificial Intelligence反演归结&#xff08;消解&#xff09;证明…...

手写Vue渲染器render函数

使用js对象来描述UI更加的灵活。“这种对象”在vue框架中被称为虚拟DOM&#xff0c;渲染函数内部可以创建虚拟DOM&#xff0c;然后vue.js可以将其内容进行渲染。 1.渲染器的介绍 渲染器的作用就是把虚拟DOM渲染为真实DOM 思考下&#xff0c;我们有一个虚拟 DOM&#xff0c;如…...

CGAL+QT

先安装CGAL和QT 安装完QT其中MSVC 这两个没配置 1、x32配置选择的是 x64配置选择的是 2、CGAL 5.4.5 - Manual: Using CGAL on Windows (with Visual C) 参数文章配置一些环境变量 3、 测试 新建build 进行cmake QT、Boost、CGAL都自动匹配上了&#xff08;环境变量已经配…...

GBase8a SSL 配置

GBase8a SSL 配置 GBase8a MPP Cluster 支持 SSL 标准协议&#xff0c; SSL 协议是一种安全性更高的协议标准&#xff0c; 它加入了数字签名和数字证书来实现客户端和服务器的双向身份验证&#xff0c;保证了通信双方更加安全的数据传输。 配置客户端使用 SSL 安全连接的方式连…...

数据结构之队列(源代码➕图解➕习题)

前言 在学过栈之后&#xff0c;会了解到栈的底层是根据顺序表或者链表来构建的&#xff0c;那么我们今天要学习的队列是否也是基于顺序表和链表呢&#xff1f;那我们直接进入正题吧&#xff01; 1. 队列的概念&#xff08;图解&#xff09; 还是跟上节一样&#xff0c;依旧用图…...

社区迭代|ETLCloud社区新增“论坛”啦!

ETLCloud社区是谷云科技RestCloud旗下面向开发工程师、集成研发人员等技术人员提供全方位交流和学习的开放式平台&#xff0c;也是ETLCloud在产品生态赋能上的一大亮点&#xff0c;旨在能够帮助更多的用户更快捷高效的掌握技能&#xff0c;也为企业提供集成人才培养赋能&#x…...

ohos的代码同步以及添加自己的代码

首先我们需要获取到官方的repo工具&#xff0c;命令如下curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ./repo&#xff0c;这里我们就拿到repo工具了&#xff0c;这个repo可以放任意地方&#xff0c;也可以放 /usr/local/bin/repo下&#xff0c;这样可以…...

Python的Pandas库(二)进阶使用

Python开发实用教程 DataFrame的运算 DataFrame重载了运算符&#xff0c;支持许多的运算 算术运算 运算方法运算说明df.add(other)对应元素的加&#xff0c;如果是标量&#xff0c;就每个元素加上标量df.radd(other)等效于otherdfdf.sub(other)对应元素相减&#xff0c;如果…...

如何才能从程序员到架构师?

1 引言 小团队一般 10 人左右&#xff0c;其中常常是技术最牛的人做架构师&#xff08;或TL&#xff09;。所以&#xff0c;架构师在广大码农中的占比大概平均不到 10%。而架构师也可以分为初级、中级、高级三档&#xff0c;江湖上真正高水平的软件架构师就更少了。 所以&…...

dvadmin-打包发布-nginx-静态服务器配置-防火墙设置

文章目录 1.下载nginx2.nginx常用命令3.dvadmin打包发布4.防火墙设置 1.下载nginx 也从作者下载的网址下载&#xff1a;https://download.csdn.net/download/m0_67316550/88470098 2.nginx常用命令 注意&#xff1a;一定要在dos窗口启动&#xff0c;不要直接双击nginx.exe&a…...

Win10中Pro/E鼠标滚轮不能缩放该怎么办?

Pro/E安装好后&#xff0c;鼠标滚轮不能缩放模型&#xff0c;该怎么办&#xff1f;问题多发生在win8/win10上&#xff0c;新装了PROE&#xff0c;发现滑动鼠标中键不能放大缩小。 彩虹图纸管理软件_图纸管理系统_图纸文档管理软件系统_彩虹EDM【官网】彩虹EDM图纸管理软件系统…...

腾讯云轻量应用服务器性能如何?值得入手吗?

腾讯云轻量应用服务器性能怎么样&#xff1f;轻量服务器的CPU内存计算性能和同规格的标准型云服务器CVM性能处于同一水准&#xff0c;性能很不错&#xff0c;具有100%CPU性能&#xff0c;并且价格很优惠&#xff0c;值得买。腾讯云百科txybk.com分享腾讯云轻量应用服务器性能测…...

主流大语言模型的技术细节

主流大语言模型的技术原理细节从预训练到微调https://mp.weixin.qq.com/s/P1enjLqH-UWNy7uaIviWRA 比较 LLaMA、ChatGLM、Falcon 等大语言模型的细节&#xff1a;tokenizer、位置编码、Layer Normalization、激活函数等。2. 大语言模型的分布式训练技术&#xff1a;数据并行、…...

科技企业如何利用智能手段提升研发效率?

观点作者&#xff1a;科易网-国家科技成果转化&#xff08;厦门&#xff09;示范基地 现状概述&#xff1a;传统研发模式的瓶颈与挑战 在全球科技创新加速迭代的背景下&#xff0c;科技企业面临的核心挑战之一是如何提升研发效率。传统研发模式往往存在以下痛点&#xff1a; 信…...

Unity/Godot开发者看过来:手把手教你将Spine动画导出并集成到游戏引擎里(附常见报错解决)

Unity/Godot开发者实战指南&#xff1a;Spine动画工程化集成全流程解析 当你在Spine中完成了一个令人满意的角色动画后&#xff0c;接下来面临的真正挑战是如何让它活灵活现地跑在游戏引擎里。作为经历过无数次Spine动画集成的老手&#xff0c;我深知这个过程中可能遇到的种种…...

实战指南:利用Hydra与SNETCracker加固3389远程桌面安全

1. 3389端口与远程桌面安全基础 3389端口是Windows远程桌面协议&#xff08;RDP&#xff09;的默认通信端口&#xff0c;就像你家大门的钥匙孔。想象一下&#xff0c;如果钥匙孔被所有人知道位置&#xff0c;又没装猫眼和防盗链&#xff0c;会是什么后果&#xff1f;这就是为什…...

2026届必备的AI辅助写作平台解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能论文工具正渐渐在学术写作流程里掺杂进来&#xff0c;变成研究者提高效率的管用帮手…...

Ai2Psd终极指南:如何将Illustrator矢量图层完美导出到Photoshop

Ai2Psd终极指南&#xff1a;如何将Illustrator矢量图层完美导出到Photoshop 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd 还在为AI到PSD的格…...

LAV Filters完整教程:如何让Windows播放器支持所有视频格式

LAV Filters完整教程&#xff1a;如何让Windows播放器支持所有视频格式 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters LAV Filters是一套基于ffmpeg的开源Di…...

如何统计不同电话号码的个数?—位图法

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

nerdctl 入门指南:从安装到容器管理

1. 为什么选择 nerdctl 管理容器&#xff1f; 如果你已经熟悉 Docker 的命令行工具&#xff0c;那么第一次接触 nerdctl 时会感到非常亲切。作为 containerd 生态中的明星工具&#xff0c;nerdctl 提供了与 Docker CLI 高度兼容的操作体验&#xff0c;但底层却采用了更轻量级的…...

解析Android Studio中文适配困局:社区语言包的技术架构与部署实践

解析Android Studio中文适配困局&#xff1a;社区语言包的技术架构与部署实践 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 在A…...

优化TJpgDec在MM32F5微控制器上的图像解码性能 - 基于MindSDK的实践探索

1. TJpgDec在嵌入式系统中的独特价值 第一次接触TJpgDec是在三年前的一个智能家居项目里&#xff0c;当时需要在资源受限的STM32F407上实现图片显示功能。市面上常见的JPEG解码库要么体积庞大&#xff0c;要么对内存要求极高&#xff0c;直到发现了ChaN开发的这个轻量级解决方案…...