我在Linux上使用PostgreSQL 10.5 (RHEL)。我最近安装了pgAudit,并试图将其配置为捕获DLL语句。
1)我尝试的第一件事是直接编辑postgresql.conf文件。我没有看到任何要编辑的注释掉的默认条目,所以在我有条目的地方: log_destination = 'csvlog‘log_collector = on,我输入了自己的条目: pgaudit.log = 'ddl’,然后重新启动了数据库。完成此操作后,我创建并删除了一个表,但日志文件PostgreSQL2019-11-19-141901.csv中没有该表的条目。
2)然后尝试使用ALTER命令创建条目: ALTER将pgaudit.log设置为'ddl';选择pg_reload_conf();完成此操作后,我注意到创建了第二个文件(postgresql.auto.conf)。该文件的条目为pgaudit.log = 'ddl‘。根据我所读到的,这个文件是在主postgresql.conf文件之后读取的。
但是,在创建和删除表之后,日志文件中仍然没有条目。不过,当我运行命令时,我确实注意到了:显示pgaudit.log;它返回的是‘角色’(而不是ddl)。
3)最后一件事是输入命令:设置pgaudit.log = 'ddl';现在运行命令时显示pgaudit.log;它返回'ddl‘。这一次我又想把桌子扔了。删除表后,我的psql客户机显示:注意:审核: SESSION,1,1,DDL,DROP,TABLE....blah,blah.未登录。这看起来像一个pgaudit条目,但在我的屏幕上,而不是在日志文件中。此时,我在运行命令时再次重新启动数据库:显示pgaudit.log;它默认为“角色”(vs.ddl)。
有人能帮我看看我做错了什么吗?
提前感谢
发布于 2020-07-17 02:43:57
在使用pgAudit之前,需要将其添加到postgresql.conf文件中。您需要取消对shared_preload_libraries的注释(如果您已经有了另一个库,则需要添加pgaudit ),如下所示:
shared_preload_libraries='pgaudit'在此之后,您必须启动服务器并添加pgaudit扩展:
CREATE EXTENSION pgaudit从那时起,您可以配置将直接记录在postgresql.conf文件上或通过set命令记录的内容。pgAudit可以通过会话注册,也可以通过创建的对象注册,这取决于您。只有在所有这些之后,您的集合pgaudit.log = 'ddl'才会注册您想要的内容。
https://dba.stackexchange.com/questions/253670
复制相似问题