《PostgreSQL服务器编程》一一1.5 审核更改
本节书摘来自华章计算机《PostgreSQL服务器编程》一书中的第1章,第1.5节,作者:(美)Hannu Krosing, Jim Mlodgenski, Kirk Roybal 著
,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
如果你需要知道谁对数据做了什么操作、是在什么时候进行的操作,一个简单的方法就是用日志来记录每个在重要的数据表上执行的动作。
这里至少有两种等效的方法可进行这种审核:
使用审核触发器
仅允许通过函数的方式来访问表,并且仅在函数内完成审核
接下来,我们将分别看一下每种方法的简单示例。
首先,我们创建这些表:
在一般情况下,并不希望用户可以更改审核日志,所以你只会把权限给到管理员,让他们可以访问这些表。而如果你计划让用户直接访问薪资表,为了达到审核的目的,你应该在这个表上放置一个触发器:
现在,让我们测试一下一些薪资管理:
为了达到审核的目的,每个更改都被保存到薪资变更日志表:
另一方面,你可能并不希望每个人都有直接访问薪资表的权限,在这种情况下,你可以执行以下语句:
同时,你给用户仅仅开放了两个函数的访问权限:一个是为了让任何用户可以查询薪资,另外一个是为了更改薪资,这个是只有管理员才可以操作的。
这些函数本身都有所有基础表的访问权限,因为它们被声明为安全定义者(SECURITY DEFINER),也就意味着它们执行的时候有创建者的权限。
薪资查看函数如下所示:
请注意,这里我们实现了一个“软件安全”(soft security)的方法,即你可以查看别人的薪资,但是你必须为这件事情负责,就是说,仅仅当你需要这样做时才有必要进行这样的操作,因为管理员将会知道你已经查看过别人的薪资。
set_salary()函数抽象出一个需求——检查用户是否存在,如果用户不存在,则创建用户。如果将用户的薪资设置为0,则会将用户从薪资表中删除。因此这个接口是被彻底简化的,这些函数的客户端应用程序需要知道的和完成的则会更少:
现在删除audit触发器(否则,更改会被日志记录两次),并测试新的功能:
Postgresql服务器配置-设置参数 Postgresql服务器配置-设置参数 1、Parameter Names and Values 每个参数都有一个值。所有参数名称都不区分大小写。每个参数值都采用五种类型之一: 布尔、字符串、整数、浮点或枚举 (枚举) Boolean:值可以是off, true, false, yes, no, 1, 0 (区分大小写)或其中一个值的任何明确前缀。
PostgreSQL服务器管理:恢复配置 这一章描述recovery.conf文件中可用的设置。它们只应用于恢复期。对于你希望执行的任意后续恢复,它们必须被重置。一旦恢复已经开始,它们就不能被更改。 recovery.conf中的设置以name = value 形式指定。
PostgreSQL服务器管理:从源代码安装 本章的内容描述从源代码发布安装PostgreSQL(如果你安装的是打包好的版本如RPM或Debian包,那么请略过这一章并且阅读打包者的指导)。
相关文章
- pg_ctl - 启动,停止和重启 PostgreSQL 服务器
- Postgresql 启动could not create listen socket for "localhost"错误的解决
- 《PostgreSQL 9.0性能调校》导读
- postmaster - PostgreSQL多用户数据库服务器
- postgres - 以单用户模式运行一个 PostgreSQL服务器
- pg_resetxlog - 重置一个 PostgreSQL 数据库集群的预写日志以及其它控制内容
- ipcclean - 从退出的PostgreSQL服务器中删除共享内存和信号灯
- 《PostgreSQL服务器编程》一一第1章 PostgreSQL服务器简介
- 《PostgreSQL服务器编程》一一1.3 超越简单函数
- 《PostgreSQL服务器编程》一一1.4 使用触发器管理相关数据
- 《PostgreSQL服务器编程》一一1.6 数据清洗
- 《PostgreSQL服务器编程》一一1.8 程序设计最佳实践
- 《PostgreSQL服务器编程》一一1.10 总结——为什么在服务器中进行程序设计
- 《PostgreSQL服务器编程》一一第1章 PostgreSQL服务器简介
- 《PostgreSQL服务器编程》一一2.5 社区
- 《PostgreSQL服务器编程》一一2.7 小结
- 《PostgreSQL服务器编程》一一
- 《PostgreSQL服务器编程》一一3.3 条件表达式
- 《PostgreSQL服务器编程》一一
- 浅析PostgreSQL备份与还原数据库、docker修改postgresql密码、pg_dump备份postgresql的用法
- Postgresql无法通过PGAdmin4连接应用程序服务器