【发布时间】:2011-05-17 19:59:15
【问题描述】:
我需要更改 PostgreSql 数据库的所有者。
如何在 phppgadmin 中更改 PostgreSql 数据库的所有者?
【问题讨论】:
标签: postgresql
我需要更改 PostgreSql 数据库的所有者。
如何在 phppgadmin 中更改 PostgreSql 数据库的所有者?
【问题讨论】:
标签: postgresql
Frank Heikens 的回答只会更新数据库所有权。通常,您还想更新包含对象(包括表)的所有权。从 Postgres 8.2 开始,REASSIGN OWNED 可用于简化此任务。
重要编辑!
当原始角色为postgres 时,切勿使用REASSIGN OWNED,这可能会损坏您的整个数据库实例。该命令将使用新所有者更新所有对象,包括系统资源(postgres0、postgres1 等)
首先,连接到管理数据库并更新数据库所有权:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
这是在 Frank 的回答中提供的 ALTER DATABASE 命令的全局等效项,但它不会更新特定数据库,而是更改“旧名称”拥有的所有数据库的所有权。
下一步是更新每个数据库的表所有权:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
这必须在 'old_name' 拥有的每个 DB 上执行。该命令将更新数据库中所有表的所有权。
【讨论】:
postgres,否则他自己... 学到了很多东西。
REASSIGN OWNED 的替代品(通常因为您的所有者是postgres),请参阅stackoverflow.com/a/2686185/1839209 中的sn-ps。
ALTER DATABASE name OWNER TO new_owner;
【讨论】:
ERROR: must be member of role ... = DOES NOT WORK WITH RDS