15

我目前使用psql -U postgres. 如何将postgres用户重命名为root

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

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

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

4

4 回答 4

17

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

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

之后,当以 root 身份登录时,您应该能够使用 postgres 用户做您想做的事情。

于 2012-03-07T19:06:17.570 回答
7

关于什么:

ALTER ROLE postgres RENAME TO root;

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

于 2012-03-07T19:14:13.910 回答
6

你可以试试

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

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

于 2012-03-07T19:09:30.520 回答
3

为了将当前用户重命名oldnamenewname,首先登录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;
于 2021-03-24T13:58:24.853 回答