Postgresql 如何将默认的postgres超级用户重命名为";根“;?

Postgresql 如何将默认的postgres超级用户重命名为";根“;?,postgresql,gentoo,Postgresql,Gentoo,我目前使用psql-U postgres登录到PostgreSQL。如何将postgres用户重命名为root 如果我已经以postgres的身份登录,那么尝试将用户postgres重命名为root将显示错误:无法重命名会话用户 是否可以在不登录为postgresuser的情况下重命名用户?我想我没有其他超级用户,因为这是一个新安装的PostgreSQL 顺便说一句,我正在AmazonEC2上运行Gentoo。您应该能够以postgres用户的身份登录并(在shell中)键入,创建一个名为roo

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

如果我已经以
postgres
的身份登录,那么尝试
将用户postgres重命名为root
将显示
错误:无法重命名会话用户

是否可以在不登录为
postgres
user的情况下重命名用户?我想我没有其他超级用户,因为这是一个新安装的PostgreSQL


顺便说一句,我正在AmazonEC2上运行Gentoo。

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

之后,当以root用户身份登录时,您应该能够对postgres用户执行您想要的操作。

您可以尝试

update pg_authid set rolname ='root' where rolname = 'postgres';
但是要注意,用手咀嚼系统目录总是有点危险。

那么:

ALTER ROLE postgres RENAME TO root;

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

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

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

将角色oldname重命名为newname;
使用密码“My-Mega-5ecure-P4ssw0rd”更改用户名;
现在使用
newname
用户登录并删除我们之前创建的临时用户:

DROP-ROLE-temp;

我想象一下:以postgres的身份登录,创建第二个超级用户,以新超级用户的身份登录,然后运行你的Alternate。你为什么要这样做?您不能以“root”身份运行postmaster,因为它只有在以非特权用户身份运行时才会启动。Linux中的
postgres
用户是否必须与数据库中的
postgres
角色匹配?我以
root
的身份登录,所以我只想键入
psql-d something
来登录,而不是
psl-U postgres-d something
。这似乎是可行的。角色和用户之间有什么区别?当我以
psql-U postgres
的身份登录时,我是以
postgres
用户还是角色的身份登录的?@hobbes3:AFAIK“user”和“group”是历史术语,然后被分解为“role”。因此,这些术语在很大程度上是可互换的。因此,您是使用角色/用户“postgres”登录的。@hobbes3:在现代PostgreSQL中,“用户”是,“组”是没有的。内部只有角色。@A.H.感谢大家对“咀嚼系统目录”的关注,我想这样做可以节省5分钟。相反,我花了大约一个小时(我把它弄坏了)。作为对其他人的一个提示:如果需要重新安装,请使用--purge(apt-get)删除postgres&依赖项。您是说要在
psql
中键入它吗?它似乎什么也没做。@hobbes3不,来自常规shell,不在psql中。@hobbes3手边没有gentoo框,只有ubuntu,如果您遇到问题,可能无法设置路径。“错误:无法重命名会话用户”。注意,OP是作为
postgres
登录的。
ALTER ROLE postgres RENAME TO root;