zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

《PostgreSQL服务器编程》一一1.5 审核更改

postgresql服务器编程 更改 1.5 一一 审核
2023-09-11 14:19:16 时间

本节书摘来自华章计算机《PostgreSQL服务器编程》一书中的第1章,第1.5节,作者:(美)Hannu Krosing, Jim Mlodgenski, Kirk Roybal 著
,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 审核更改

如果你需要知道谁对数据做了什么操作、是在什么时候进行的操作,一个简单的方法就是用日志来记录每个在重要的数据表上执行的动作。
这里至少有两种等效的方法可进行这种审核:
使用审核触发器
仅允许通过函数的方式来访问表,并且仅在函数内完成审核
接下来,我们将分别看一下每种方法的简单示例。
首先,我们创建这些表:
image

在一般情况下,并不希望用户可以更改审核日志,所以你只会把权限给到管理员,让他们可以访问这些表。而如果你计划让用户直接访问薪资表,为了达到审核的目的,你应该在这个表上放置一个触发器:
image

现在,让我们测试一下一些薪资管理:
image
image

为了达到审核的目的,每个更改都被保存到薪资变更日志表:
image

另一方面,你可能并不希望每个人都有直接访问薪资表的权限,在这种情况下,你可以执行以下语句:
image

同时,你给用户仅仅开放了两个函数的访问权限:一个是为了让任何用户可以查询薪资,另外一个是为了更改薪资,这个是只有管理员才可以操作的。
这些函数本身都有所有基础表的访问权限,因为它们被声明为安全定义者(SECURITY DEFINER),也就意味着它们执行的时候有创建者的权限。
薪资查看函数如下所示:
image

请注意,这里我们实现了一个“软件安全”(soft security)的方法,即你可以查看别人的薪资,但是你必须为这件事情负责,就是说,仅仅当你需要这样做时才有必要进行这样的操作,因为管理员将会知道你已经查看过别人的薪资。
set_salary()函数抽象出一个需求——检查用户是否存在,如果用户不存在,则创建用户。如果将用户的薪资设置为0,则会将用户从薪资表中删除。因此这个接口是被彻底简化的,这些函数的客户端应用程序需要知道的和完成的则会更少:
image
image

现在删除audit触发器(否则,更改会被日志记录两次),并测试新的功能:
image
image


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包,那么请略过这一章并且阅读打包者的指导)。