Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改PostgreSql数据库的所有者?_Postgresql - Fatal编程技术网

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

如何更改PostgreSql数据库的所有者?,postgresql,Postgresql,我需要更改PostgreSql数据库的所有者 如何在phppgadmin中更改PostgreSql数据库的所有者 ALTER DATABASE name OWNER TO new_owner; 有关更多详细信息,请参阅。Frank Heikens的回答将仅更新数据库所有权。通常,您还需要更新所包含对象(包括表)的所有权。从Postgres 8.2开始,可以简化此任务 重要编辑 当原始角色为postgres时,切勿使用REASSIGN OWNED,这可能会损坏整个数据库实例。该命令将使用新所有者

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

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

ALTER DATABASE name OWNER TO new_owner;

有关更多详细信息,请参阅。

Frank Heikens的回答将仅更新数据库所有权。通常,您还需要更新所包含对象(包括表)的所有权。从Postgres 8.2开始,可以简化此任务

重要编辑

当原始角色为
postgres
时,切勿使用
REASSIGN OWNED
,这可能会损坏整个数据库实例。该命令将使用新所有者更新所有对象,包括系统资源(postgres0、postgres1等)


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

psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
这是Frank回答中提供的
alterdatabase
命令的全局等价物,但它不更新特定数据库,而是更改“old_name”拥有的所有数据库的所有权

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

psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;

必须对“old_name”拥有的每个数据库执行此操作。该命令将更新数据库中所有表的所有权。

为了完整起见,这里是手册中记录此内容的部分:@mArtinko5MB:不可能,ALTER不会删除数据库。@mArtinko5MB:也不可能,ALTER TABLE不会删除表。向我们显示您的SQL,您的语句中有一些严重损坏。注意,数据库中的所有表和序列仍将分配给原始所有者。
错误:必须是角色的成员…
=Nice。。。除非所有者是博士后,否则他自己。。。这是一个艰难的过程。问题是它不会更改单个数据库的所有者,但会用新数据库替换所有数据库的所有者。上面的重新分配OWNED会将同一实例中的所有数据库(如果有多个数据库)更改为新角色。对于
重新分配OWNED
(通常是因为您的所有者是
postgres
),请参见中的代码片段。