PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como alterar um usuário para superusuário no PostgreSQL

  • Criando um novo usuário
  • Visualizando permissões de usuário existentes
  • Alterando permissões de usuário existentes
    • Atribuindo SUPERUSER Permissão
    • Revogando permissões

A modificação das permissões do usuário no PostgreSQL pode variar de simples a extremamente complexa, dependendo da granularidade permissiva realmente necessária. Na maioria dos casos, no entanto, é o poderoso ALTER USER comando que deve ser utilizado para fazer tudo, desde permitir que os usuários façam login, criem bancos de dados, gerenciem funções e até se tornem um SUPERUSER conta.

Vamos explorar brevemente o poder do ALTER USER comando para que você possa executar facilmente uma variedade de atribuições e remoções de permissão conforme a necessidade.

Criando um novo usuário


Antes de começarmos a alterar permissões de usuário, devemos estabelecer uma nova conta de usuário (comumente chamada de ROLE ) para mexer.

Para começar, listaremos todos os usuários existentes:
=# SELECT usename FROM pg_user;
 usename
----------
 postgres
(1 row)

Por padrão, postgres é normalmente o único usuário que existe, então queremos criar um novo usuário de librarian para controlar nossa library base de dados. Isso pode ser feito usando o CREATE USER comando:
=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
  usename
-----------
 postgres
 librarian
(2 rows)

Visualizando permissões de usuário existentes


Muitas vezes, pode ser útil examinar as permissões existentes atribuídas aos usuários no sistema. Isso pode ser feito facilmente com o \du comando do psql incitar:
=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Podemos ver claramente que, embora tenhamos adicionado um novo librarian usuário, temos que atribuir algumas permissões.

Alterando permissões de usuário existentes


Agora que nosso librarian usuário existe, podemos começar a usar ALTER USER para modificar as permissões concedidas ao librarian .

O formato básico de ALTER USER inclui o nome do usuário (ou ROLE ) seguido por uma série de options informar ao PostgreSQL quais alterações permissivas devem ser feitas:
=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;

Essas opções variam de CREATEDB , CREATEROLE , CREATEUSER , e até SUPERUSER . Além disso, a maioria das opções também tem uma contrapartida negativa, informando ao sistema que você deseja negar o usuário essa permissão específica. Esses nomes de opções são os mesmos que suas contrapartes de atribuição, mas são prefixados com NO (por exemplo, NOCREATEDB , NOCREATEROLE , NOSUPERUSER ).

Atribuindo SUPERUSER Permissão


Agora que entendemos o básico sobre como criar usuários e usar ALTER USER para modificar as permissões, podemos simplesmente usar o SUPERUSER opção para atribuir nosso librarian usuário SUPERUSER permissão:
=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE

Com certeza, se exibirmos nossa lista de permissões agora, veremos librarian tem o novo SUPERUSER permissão que queremos:
=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian | Superuser                                      | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Revogando permissões


No caso de cometermos um erro e atribuirmos uma permissão que desejamos revogar posteriormente, basta emitir o mesmo ALTER USER mas adicione o comando NO prefixo na frente das opções permissivas a serem revogadas.

Por exemplo, podemos remover SUPERUSER do nosso librarian usuário assim:
=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}