postgres:升级用户成为超级用户?

flo*_*fan 616 sql postgresql

在postgres中,如何将现有用户更改为超级用户?出于各种原因,我不想删除现有用户.

# alter user myuser ...?
Run Code Online (Sandbox Code Playgroud)

Qua*_*noi 1221

ALTER USER myuser WITH SUPERUSER;
Run Code Online (Sandbox Code Playgroud)

文档.

  • 相反的操作是"ALTER USER myuser WITH NOSUPERUSER" (154认同)
  • `SELECT rolname,rolsuper FROM pg_roles;`到@masterweily (20认同)
  • @masterweily你可以用`\ du`列出所有用户/角色. (15认同)
  • 我得到:错误:必须是超级用户才能改变超级用户 (5认同)
  • 以及如何检测myuser当前是否为超级用户? (2认同)

Air*_*bat 60

要扩展以上内容并快速参考:

  • 要使用户成为超级用户: ALTER USER username WITH SUPERUSER;
  • 要使用户不再是超级用户: ALTER USER username WITH NOSUPERUSER;
  • 只是允许用户创建数据库: ALTER USER username CREATEDB;

您还可以使用CREATEROLECREATEUSER允许用户权限,而不必使其成为超级用户.

文档


el *_*ser 22

$ su - postgres
$ psql
$ \du;用于查看db上
的用户选择您想要成为超级用户的用户:
$ ALTER USER "user" with superuser;


Che*_*oor 8

运行此命令

alter user myuser with superuser;
Run Code Online (Sandbox Code Playgroud)

如果要查看用户的权限,请运行以下命令

\du
Run Code Online (Sandbox Code Playgroud)


小智 8

可能有时升级到超级用户可能不是一个好选择.因此除了超级用户之外,您还可以使用许多其他选项.打开终端并键入以下内容:

$ 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
Run Code Online (Sandbox Code Playgroud)

还列出了选项列表

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'
Run Code Online (Sandbox Code Playgroud)

所以在命令行中它看起来像

postgres=# ALTER USER my_user WITH  LOGIN
Run Code Online (Sandbox Code Playgroud)

或使用加密密码.

postgres=# ALTER USER my_user  WITH ENCRYPTED PASSWORD '5d41402abc4b2a76b9719d911017c592';
Run Code Online (Sandbox Code Playgroud)

或在特定时间后撤消权限.

postgres=# ALTER USER my_user  WITH VALID UNTIL '2019-12-29 19:09:00';
Run Code Online (Sandbox Code Playgroud)


Vas*_*cov 6

您可以创建 aSUPERUSER或促进USER,因此对于您的情况

$ sudo -u postgres psql -c "ALTER USER myuser WITH SUPERUSER;"
Run Code Online (Sandbox Code Playgroud)

或回滚

$ sudo -u postgres psql -c "ALTER USER myuser WITH NOSUPERUSER;"
Run Code Online (Sandbox Code Playgroud)

要防止在设置密码时记录命令,请在其前面插入一个空格,但请检查您的系统是否支持此选项。

$  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';"
Run Code Online (Sandbox Code Playgroud)