如何在 PostgreSQL 8.1 中编辑系统目录?

如何在 PostgreSQL 8.1 中编辑系统目录?

我通过添加找到了一些解决方案

allow_system_table_mods = on

到 PostgreSQL 配置文件。

但在 PostgreSQL 上这不起作用。我找不到任何其他方法可以让我编辑它catalogs

有人有想法吗?

答案1

我刚刚从源代码并且以超级用户身份编辑系统目录没有任何问题。它rolcatupdatepg_roles系统目录:

角色可以直接更新系统目录。(除非此列为真,否则即使是超级用户也不能这样做。)

您可以通过以下方式检查:

SELECT rolcatupdate FROM pg_roles WHERE rolname LIKE 'postgres';
 rolcatupdate 
--------------
 t
(1 row)

对于其他角色,您有价值false,因此您可以(可能您根本不应该这样做,所以要小心)设置为true

UPDATE pg_roles SET rolcatupdate = true WHERE rolname LIKE 'roleName'

第二种方法(假设你在某些事故后没有任何超级用户帐户)是在单用户模式

当运行独立服务器时,会话用户将被设置为 ID 为 1 的用户。此用户实际上不必存在,因此可以使用独立服务器手动恢复某些类型的系统目录意外损坏。隐含的超级用户权限 被授予独立模式下ID为1的用户。

相关内容