我正试图找到我在postgresql中创建的带有日期和时间戳以及分配给他们的权限的用户。我已经搜索了一些像pg_user这样的表,但找不到它。请提出建议。
类似的问题经常出现,通常是询问表的创建时间,所以我会尽量永远回答这个问题。
PostgreSQL不会跟踪对象的创建时间或其他类似于数据库中的审计信息。即使我们考虑了这样一个功能,它应该如何工作也是值得怀疑的。如果恢复pg_dump
,表或角色的创建时间会是恢复的时间吗?如果没有,就必须有一种方法来覆盖SQL中的表或角色创建时间。但是,你无法阻止人们丢弃一个对象,然后用一个假的旧创建时间戳再次创建它。
处理此类需求的正确方法是使用日志文件。设置log_statement = 'ddl'
,所有DDL语句都将被记录。
解决此的两个步骤
- 确保track_commit_timestamp处于打开状态
show track_commit_timestamp ;
track_commit_timestamp
------------------------
on
(1排(
- 执行
select pg_xact_commit_timestamp(xmin) from pg_authid;