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

hob*_*es3 10 postgresql gentoo

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

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

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

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

Joa*_*son 15

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

createuser --superuser root
psql> create database root owner root
Run Code Online (Sandbox Code Playgroud)

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


A.H*_*.H. 8

你可以试试

update pg_authid set rolname ='root' where rolname = 'postgres';
Run Code Online (Sandbox Code Playgroud)

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

  • @hobbes3:在现代PostgreSQL中,“用户”是[具有登录名的角色](http://www.postgresql.org/docs/current/interactive/sql-createuser.html),“组”是没有登录名的。内部只有角色。 (2认同)
  • @AH 感谢您对“咀嚼系统目录”的提醒,我想这样可以节省 5 分钟。相反,我花了大约一个小时(我打破了它)。就像给其他人的提示一样:如果需要重新安装,请使用 --purge (apt-get) 删除 postgres 和依赖项。 (2认同)

dam*_*amd 6

为了将当前用户重命名oldnamenewname,首先登录oldname并创建一个临时超级用户,如下所示:

CREATE ROLE temp LOGIN SUPERUSER PASSWORD 'mytemporarypassword';
Run Code Online (Sandbox Code Playgroud)

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

ALTER ROLE oldname RENAME TO newname;
ALTER USER newname WITH PASSWORD 'My-Mega-5ecure-P4ssw0rd';
Run Code Online (Sandbox Code Playgroud)

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

DROP ROLE temp;
Run Code Online (Sandbox Code Playgroud)


Fra*_*ens 5

关于什么:

ALTER ROLE postgres RENAME TO root;
Run Code Online (Sandbox Code Playgroud)

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

  • “错误:会话用户无法重命名”。请注意,该 OP 以 `postgres` 身份登录。 (6认同)