如何将默认的postgres超级用户重命名为“root”?

时间:2012-03-07 18:59:35

标签: postgresql gentoo

我目前使用psql -U postgres登录PostgreSQL。如何将postgres用户重命名为root

如果我已经以postgres身份登录,则尝试ALTER USER postgres RENAME TO root会说ERROR: session user cannot be renamed

是否可以重命名用户而无需以postgres用户身份登录?我不认为我有任何其他超级用户,因为这是一个全新的PostgreSQL安装。

顺便说一下,我在Amazon EC2上运行Gentoo。

4 个答案:

答案 0 :(得分:14)

您应该能够通过以postgres用户身份登录并在(在shell中)键入来创建一个名为root的新postgres超级用户;

createuser --superuser root
psql> create database root owner root

之后,当以root身份登录时,您应该可以使用postgres用户执行所需的操作。

答案 1 :(得分:4)

怎么样:

ALTER ROLE postgres RENAME TO root;

使用不同的超级用户角色?

答案 2 :(得分:2)

你可以尝试

update pg_authid set rolname ='root' where rolname = 'postgres';

但请注意,手动咀嚼系统目录总是有点危险。

答案 3 :(得分:1)

为了将当前用户 oldname 重命名为 newname,首先以 oldname 身份登录并创建一个临时超级用户:

CREATE ROLE temp LOGIN SUPERUSER PASSWORD 'mytemporarypassword';

注销,然后使用 temp 超级用户登录并重命名 oldname 用户。您必须同时为该用户重置密码,因为 PostgreSQL 会告诉您:“由于角色重命名,MD5 密码已清除”。

ALTER ROLE oldname RENAME TO newname;
ALTER USER newname WITH PASSWORD 'My-Mega-5ecure-P4ssw0rd';

现在使用 newname 用户登录并删除我们之前创建的临时用户:

DROP ROLE temp;