Postgres: 将用户升级为超级用户?

734
在Postgres中,我如何将现有用户更改为超级用户?出于各种原因,我不想删除现有用户。
# alter user myuser ...?
12个回答

1415
ALTER USER myuser WITH SUPERUSER;

您可以在ALTER USER文档中阅读更多信息。


180
相反的操作是 ALTER USER myuser WITH NOSUPERUSER - d.raev
3
如何检测我的用户是否具有超级用户权限? - masterweily
23
请将以下文本翻译成中文并发送给 @masterweily:SELECT rolname, rolsuper FROM pg_roles; - caulfield
9
我理解您希望翻译的内容是:我收到了一个错误提示:“ERROR: 必须是超级用户才能更改超级用户”。 - Stepan Yakovenko
18
你可以使用\du命令列出所有的用户/角色。 - XåpplI'-I0llwlg'I -
显示剩余7条评论

75

为了更详细地阐述并提供快速参考:

  • 将用户设置为超级用户:ALTER USER username WITH SUPERUSER;
  • 将用户取消超级用户的权限:ALTER USER username WITH NOSUPERUSER;
  • 只允许用户创建数据库:ALTER USER username CREATEDB;

您还可以使用CREATEROLECREATEUSER为用户授权而不使其成为超级用户。

文档


创建超级用户角色dbaCREATE ROLE dba WITH SUPERUSER;dba授权给用户名usernameGRANT dba TO username;用户username可以通过使用SET ROLE dba;命令按需成为超级用户。 在日志文件中,命令仍然记录在username下。 - Hans Ginzel

38

$ su - postgres
$ psql
$ \du; 用于查看数据库中的用户
选择要成为超级用户的用户并执行以下操作:
$ ALTER USER "user" with superuser;


在这个特定的情况下,你需要把用户名放在引号内,例如 ALTER USER "user" WITH SUPERUSER; - Carlos.V
1
@Carlos.V 是的,因为“user”是保留字。 - questionto42

13

升级为超级用户可能并不总是一个好选择,除了超级用户之外,还有很多其他选项可供使用。打开您的终端并输入以下命令:

$ sudo su - postgres
[sudo] password for user: (type your password here)
$ psql
postgres@user:~$ psql
psql (10.5 (Ubuntu 10.5-1.pgdg18.04+1))
Type "help" for help.

postgres=# ALTER USER my_user WITH option

同时列出选项列表

SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB  | CREATEROLE | NOCREATEROLE |
CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION|
NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMIT connlimit | 
[ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp'
所以在命令行中它会看起来像:
postgres=# ALTER USER my_user WITH  LOGIN

或者使用加密密码。

postgres=# ALTER USER my_user  WITH ENCRYPTED PASSWORD '5d41402abc4b2a76b9719d911017c592';

或在特定时间后撤销权限。

postgres=# ALTER USER my_user  WITH VALID UNTIL '2019-12-29 19:09:00';

10

运行此命令

alter user myuser with superuser;

如果您想查看用户的权限,请执行以下命令

\du

6
你可以创建一个SUPERUSER或晋升USER,因此对于你的情况来说。
$ sudo -u postgres psql -c "ALTER USER myuser WITH SUPERUSER;"

或者回滚。
$ sudo -u postgres psql -c "ALTER USER myuser WITH NOSUPERUSER;"

为了避免您设置密码时记录命令,请在命令前面插入一个空格,但请检查您的系统是否支持此选项。
$  sudo -u postgres psql -c "CREATE USER my_user WITH PASSWORD 'my_pass';"
$  sudo -u postgres psql -c "CREATE USER my_user WITH SUPERUSER PASSWORD 'my_pass';"

4
alter user username superuser;

1

1

切换用户为超级用户或普通用户非常容易。 首先使用以下命令检查所有用户的权限。

\du

然后使用以下命令将用户设置为超级用户
ALTER USER user_name WITH SUPERUSER;

使用以下命令进行反向操作
ALTER USER user_name WITH NOSUPERUSER;

为了进一步理解,请查看以下教程: 如何将用户更改为PostgreSQL的超级用户


0
使用postgres用户登录到postgres数据库。
\c postgres postgres
使用\du命令检查当前授予用户的角色。
使用以下命令授予超级用户权限: alter user username with superuser;

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接