postgres: atualize um usuário para ser um superusuário?


644

No postgres, como altero um usuário existente para superusuário? Não quero excluir o usuário existente, por vários motivos.

# alter user myuser ...?

Respostas:


1262
ALTER USER myuser WITH SUPERUSER;

Você pode ler mais na documentação


157
a operação oposta é ALTER USER myuser WITH NOSUPERUSER
d.raev

2
e como posso detectar se meu usuário é atualmente superusuário?
Masterweily # 10/13

20
SELECT rolname, rolsuper FROM pg_roles;para @masterweily
caulfield

6
Eu recebo: ERROR: deve ser superusuário para superusuários alter
Stepan Yakovenko

15
@masterweily Você pode fazer \dupara listar todos os usuários / funções.
XåpplI'-I0llwlg'I - 06/04/19

63

Para expandir o exposto acima e faça uma referência rápida:

  • Para tornar um usuário um superusuário: ALTER USER username WITH SUPERUSER;
  • Para tornar um usuário não mais um superusuário: ALTER USER username WITH NOSUPERUSER;
  • Para permitir apenas que o usuário crie um banco de dados: ALTER USER username CREATEDB;

Você também pode usar CREATEROLEe CREATEUSERpermitir privilégios de um usuário sem torná-lo um superusuário.

Documentação


27

$ su - postgres
$ psql
$ \du;para ver o usuário no db,
selecione o usuário que você deseja que seja superusuário e:
$ ALTER USER "user" with superuser;


neste caso específico, você deve colocar o nome de usuário dentro de vírgulas, por exemploALTER USER "user" WITH SUPERUSER;
Carlos.V

9

Execute este comando

alter user myuser with superuser;

Se você deseja ver a permissão para um usuário, execute o seguinte comando

\du

8

Às vezes, a atualização para um superusuário pode não ser uma boa opção. Portanto, além do superusuário, existem muitas outras opções que você pode usar. Abra seu terminal e digite o seguinte:

$ 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

Também listando a lista de opções

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'

Então, na linha de comando, parecerá

postgres=# ALTER USER my_user WITH  LOGIN

OU use uma senha criptografada.

postgres=# ALTER USER my_user  WITH ENCRYPTED PASSWORD '5d41402abc4b2a76b9719d911017c592';

OU revogar permissões após um tempo específico.

postgres=# ALTER USER my_user  WITH VALID UNTIL '2019-12-29 19:09:00';

4

Você pode criar SUPERUSERou promover USER, portanto, para o seu caso

$ sudo -u postgres psql -c "ALTER USER myuser WITH SUPERUSER;"

ou reversão

$ sudo -u postgres psql -c "ALTER USER myuser WITH NOSUPERUSER;"

Para impedir que um comando faça logon ao definir a senha, insira um espaço em branco na frente dele, mas verifique se o seu sistema suporta esta opção.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.