Postgresql - 如何将超级用户更改为nosuperuser?

时间:2017-11-02 12:13:59

标签: sql postgresql

我有一个角色:

CREATE ROLE x LOGIN
  ENCRYPTED PASSWORD '....'
  SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

此角色已创建。

我想将其修改为:

  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

SUPERUSER更改为NOSUPERUSER;

是否可以在不执行Drop role的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

https://www.postgresql.org/docs/current/static/sql-alterrole.html

  

ALTER ROLE role_specification [WITH]选项[...]

     

其中选项可以是:

  SUPERUSER | NOSUPERUSER
t=# create user su superuser;
CREATE ROLE
t=# \du+ su
                  List of roles
 Role name | Attributes | Member of | Description
-----------+------------+-----------+-------------
 su        | Superuser  | {}        |

t=# alter user su nosuperuser;
ALTER ROLE
t=# \du+ su
                  List of roles
 Role name | Attributes | Member of | Description
-----------+------------+-----------+-------------
 su        |            | {}        |

或使用可选的WITH:

t=# alter user su with nosuperuser;
ALTER ROLE