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

发布于 2024-10-05 07:55:53 字数 58 浏览 2 评论 0原文

如何在 phppgadmin 中更改 PostgreSQL 数据库的所有权?

How can I change ownership of a PostgreSQL database in phppgadmin?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

难得心□动 2024-10-12 07:55:53
ALTER DATABASE name OWNER TO new_owner;

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

ALTER DATABASE name OWNER TO new_owner;

See PostgreSQL manual's entry on this for more details.

心碎无痕… 2024-10-12 07:55:53

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

重要编辑!

当原始角色为 postgres 时,切勿使用REASSIGN OWNED,这可能会损坏您的整个数据库实例。该命令将使用新所有者更新所有对象,包括系统资源(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”拥有的每个数据库上执行此操作。该命令将更新数据库中所有表的所有权。

Frank Heikens answer will only update database ownership. Often, you also want to update ownership of contained objects (including tables). Starting with Postgres 8.2, REASSIGN OWNED is available to simplify this task.

IMPORTANT EDIT!

Never use REASSIGN OWNED when the original role is postgres, this could damage your entire DB instance. The command will update all objects with a new owner, including system resources (postgres0, postgres1, etc.)


First, connect to admin database and update DB ownership:

psql
postgres=# REASSIGN OWNED BY old_name TO new_name;

This is a global equivalent of ALTER DATABASE command provided in Frank's answer, but instead of updating a particular DB, it change ownership of all DBs owned by 'old_name'.

The next step is to update tables ownership for each database:

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

This must be performed on each DB owned by 'old_name'. The command will update ownership of all tables in the DB.

信愁 2024-10-12 07:55:53

对弗兰克提出的答案稍作修改。虽然查询是正确的,但可以在不对所有权进行任何更改的情况下执行查询。

当我们以 olduser 身份登录并在终端中运行 psql 并且不指定数据库时,就会发生这种情况。

相反,在使用旧用户登录后..
使用 psql 键入 dbname

终端提示符将会改变。运行命令后,您将看到输出为“ALTER DATABASE”。您可以使用“\list”命令验证所有权

$ psql <<dbname>>
dbname=# ALTER DATABASE name OWNER TO new_owner;

ALTER DATABASE

A slight change to answer proposed by Frank. While the query is correct, one may execute the query without making any changes to the ownership.

This happens when we login as the olduser and run psql in the terminal and do not specify the database.

Instead , after logging with older user..
type the dbname with psql

Terminal prompt will change. After running the command, you will see the output as "ALTER DATABASE". You can verify the ownership with '\list' command

$ psql <<dbname>>
dbname=# ALTER DATABASE name OWNER TO new_owner;

ALTER DATABASE
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文