postgres: ¿actualizar a un usuario para que sea un superusuario?

644

En postgres, ¿cómo cambio a un usuario existente para que sea un superusuario? No quiero eliminar el usuario existente, por varias razones.

# alter user myuser ...?
flossfan
fuente

Respuestas:

1262
ALTER USER myuser WITH SUPERUSER;

Puedes leer más en la Documentación

Quassnoi
fuente
157
la operación opuesta es ALTER USER myuser WITH NOSUPERUSER
d.raev
2
¿y cómo puedo detectar si myuser es actualmente superusuario?
masterweily
20
SELECT rolname, rolsuper FROM pg_roles;a @masterweily
caulfield
66
Obtengo: ERROR: debe ser superusuario para alterar superusuarios
Stepan Yakovenko
15
@masterweily Puede hacer \duuna lista de todos los usuarios / roles.
XåpplI'-I0llwlg'I -
63

Para ampliar lo anterior y hacer una referencia rápida:

  • Para hacer que un usuario sea un Superusuario: ALTER USER username WITH SUPERUSER;
  • Para que un usuario ya no sea un Superusuario: ALTER USER username WITH NOSUPERUSER;
  • Para permitir al usuario crear una base de datos: ALTER USER username CREATEDB;

También puede usar CREATEROLEy CREATEUSERpermitir privilegios de usuario sin convertirlos en superusuario.

Documentación

ZZ9
fuente
27

$ su - postgres
$ psql
$ \du;para ver al usuario en db,
seleccione el usuario que desea que sea superusuario y:
$ ALTER USER "user" with superuser;

el fuser
fuente
en este caso específico, debe poner el nombre de usuario dentro de comas, por ejemploALTER USER "user" WITH SUPERUSER;
Carlos.V
9

Ejecute este comando

alter user myuser with superuser;

Si desea ver el permiso para que un usuario ejecute el siguiente comando

\du
Chetan kapoor
fuente
8

Es posible que a veces actualizar a un superusuario no sea una buena opción. Por lo tanto, aparte del superusuario, hay muchas otras opciones que puede usar. Abra su terminal y escriba lo siguiente:

$ 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

También enumerando la lista de opciones

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'

Entonces en la línea de comando se verá así

postgres=# ALTER USER my_user WITH  LOGIN

O use una contraseña encriptada.

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

O revocar permisos después de un tiempo específico.

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

Puedes crear SUPERUSERo promocionar USER, así que para tu caso

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

o revertir

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

Para evitar que un comando inicie sesión cuando configura la contraseña, inserte un espacio en blanco delante de él, pero verifique que su sistema admita esta opción.

$  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
fuente
4
alter user username superuser;
Bala
fuente