如何更改PostgreSql数据库的所有者?

Jay*_*hri 191 postgresql

我需要更改PostgreSql数据库的所有者.

如何在phppgadmin中更改PostgreSql数据库的所有者?

谢谢.

Fra*_*ens 319

ALTER DATABASE name OWNER TO new_owner;
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅Postgresql手册中的相关条目.

  • @ mArtinko5MB:这是不可能的,ALTER没有DROP数据库. (17认同)
  • @ mArtinko5MB:也不可能,ALTER TABLE没有DROP表.向我们展示您的SQL,在您的陈述中严重破坏了某些内容. (17认同)
  • 请注意,数据库中的所有表和序列仍将分配给原始所有者. (17认同)
  • 为了完整起见,本手册的部分内容记录了这一点:http://www.postgresql.org/docs/current/static/sql-alterdatabase.html (3认同)
  • 这个命令确实删除了我的数据库......很好 (2认同)
  • `错误:必须是角色的成员 ...` = [不适用于 RDS](/sf/ask/1867925041/ -in-postgresql/37331821) (2认同)

Ant*_*ane 38

Frank Heikens的回答只会更新数据库所有权.通常,您还希望更新包含对象(包括表)的所有权.从Postgres 8.2开始,REASSIGN OWNED可用于简化此任务.

首先,连接到管理数据库并更新数据库所有权:

psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
Run Code Online (Sandbox Code Playgroud)

这是ALTER DATABASEFrank的答案中提供的全局等效命令,但它不是更新特定数据库,而是更改'old_name'拥有的所有数据库的所有权.

下一步是更新每个数据库的表所有权:

psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
Run Code Online (Sandbox Code Playgroud)

必须在'old_name'拥有的每个DB上执行此操作.该命令将更新数据库中所有表的所有权.

  • 太好了!......除非主人是"postgres",否则他自己也很难道. (7认同)
  • 问题在于它不会更改单个数据库的所有者,而是将所有位置的所有者替换为新的所有者。 (3认同)
  • 有关“REASSIGN OWNED”的替代方案(通常是因为您的所有者是“postgres”),请参阅 /sf/answers/188032981/ 中的片段。 (2认同)