Answers:
ALTER DATABASE name OWNER TO new_owner;
有关更多详细信息,请参见Postgresql手册上的条目。
Frank Heikens的答案只会更新数据库所有权。通常,您还希望更新所包含对象(包括表)的所有权。从Postgres 8.2开始,可以使用REASSIGN OWNED简化此任务。
重要编辑!
REASSIGN OWNED
原始角色为时不要使用postgres
,这可能会损坏您的整个数据库实例。该命令将使用新的所有者更新所有对象,包括系统资源(postgres0,postgres1等)。
首先,连接到管理数据库并更新数据库所有权:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
这相当于 ALTER DATABASE
弗兰克答案中提供命令,但它不会更新特定的数据库,而是更改了“ old_name”拥有的所有数据库的所有权。
下一步是更新每个数据库的表所有权:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
必须在“ old_name”拥有的每个数据库上执行此操作。该命令将更新数据库中所有表的所有权。
postgres
,否则……。。。