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 ...?
flossfan
fonte

Respostas:

1262
ALTER USER myuser WITH SUPERUSER;

Você pode ler mais na documentação

Quassnoi
fonte
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

ZZ9
fonte
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;

el fusor
fonte
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
Chetan kapoor
fonte
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';
Sandip Debnath
fonte
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';"
Vasilii Suricov
fonte
4
alter user username superuser;
Bala
fonte