ChatGPT解决这个技术问题 Extra ChatGPT

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

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

# alter user myuser ...?

A
Aditya Kresna Permana
ALTER USER myuser WITH SUPERUSER;

您可以在 Documentation 阅读更多信息


相反的操作是 ALTER USER myuser WITH NOSUPERUSER
以及如何检测 myuser 当前是否是超级用户?
SELECT rolname, rolsuper FROM pg_roles; 给@masterweily
我得到:错误:必须是超级用户才能更改超级用户
@masterweily 您可以执行 \du 列出所有用户/角色。
Z
ZZ9

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

使用户成为超级用户: ALTER USER username WITH SUPERUSER;

使用户不再是超级用户:ALTER USER username WITH NOSUPERUSER;

只允许用户创建数据库: ALTER USER username CREATEDB;

您还可以使用 CREATEROLECREATEUSER 来授予用户权限而不使他们成为超级用户。

Documentation


CREATE ROLE dba WITH SUPERUSER; GRANT dba TO username; 用户 username 只能使用 SET ROLE dba;按需成为超级用户。在日志文件中仍然记录在 username 下的命令。
e
el fuser

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


在这种特定情况下,您必须将用户名放在逗号中,例如 ALTER USER "user" WITH SUPERUSER;
@Carlos.V 因为 user 是保留字,是的。
S
Sandip Debnath

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

$ 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';

C
Chetan kapoor

运行此命令

alter user myuser with superuser;

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

\du

V
Vasilii Suricov

您可以创建一个 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';"

M
Muhammad Dyas Yaskur
alter user username superuser;

R
Robert J

如果您因为使用 Amazon Redshift 而达到此目标,则不能分配 SUPERUSER

ALTER USER <username> SUPERUSER;

而是分配 CREATEUSER

ALTER USER <username> CREATEUSER;

显然,SUPERUSER 在 Amazon Redshift 集群中不是可用的用户分配。我对此感到非常困惑。

https://docs.aws.amazon.com/redshift/latest/dg/r_superusers.html

显示此的屏幕截图:

https://i.stack.imgur.com/uyWXt.png

https://i.stack.imgur.com/ycbeL.png