在postgres中,如何将现有用户更改为超级用户?由于各种原因,我不想删除现有用户。
# alter user myuser ...?
在postgres中,如何将现有用户更改为超级用户?由于各种原因,我不想删除现有用户。
# alter user myuser ...?
当前回答
对于您的情况,您可以创建一个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';"
其他回答
执行此命令
alter user myuser with superuser;
如果您想查看某个用户的权限,请执行以下命令
\du
扩展以上内容并快速参考:
创建一个超级用户:ALTER user username WITH SuperUser ALTER user username WITH NOSUPERUSER 只允许用户创建数据库:ALTER user username CREATEDB;
您还可以使用CREATEROLE和CREATEUSER来允许用户权限,而不必使其成为超级用户。
文档
对于您的情况,您可以创建一个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';"
如果你达到这个是因为你在使用亚马逊红移,你不能分配SUPERUSER
ALTER USER <username> SUPERUSER;
而是指定CREATEUSER:
ALTER USER <username> CREATEUSER;
显然,SUPERUSER在Amazon红移集群中不是一个可用的用户分配。我完全被搞糊涂了。
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
可能有时候升级到超级用户可能不是一个好的选择。 所以除了超级用户,你还有很多其他的选项可以使用。 打开终端,输入以下内容:
$ 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';