postgres: mettre à niveau un utilisateur pour devenir un superutilisateur?

644

Dans PostgreSQL, comment puis-je changer un utilisateur existant en superutilisateur? Je ne veux pas supprimer l'utilisateur existant, pour diverses raisons.

# alter user myuser ...?
flossfan
la source

Réponses:

1262
ALTER USER myuser WITH SUPERUSER;

Vous pouvez en savoir plus sur la documentation

Quassnoi
la source
157
l'opération inverse est ALTER USER myuser WITH NOSUPERUSER
d.raev
2
et comment puis-je détecter si mon utilisateur est actuellement superutilisateur?
masterweily
20
SELECT rolname, rolsuper FROM pg_roles;à @masterweily
caulfield
6
J'obtiens: ERREUR: doit être superutilisateur pour modifier les superutilisateurs
Stepan Yakovenko
15
@masterweily Vous pouvez faire \dupour lister tous les utilisateurs / rôles.
XåpplI'-I0llwlg'I -
63

Pour développer ce qui précède et faire une référence rapide:

  • Pour faire d'un utilisateur un superutilisateur: ALTER USER username WITH SUPERUSER;
  • Pour qu'un utilisateur ne soit plus un superutilisateur: ALTER USER username WITH NOSUPERUSER;
  • Pour autoriser simplement l'utilisateur à créer une base de données: ALTER USER username CREATEDB;

Vous pouvez également utiliser CREATEROLEet CREATEUSERpour autoriser les privilèges d'un utilisateur sans en faire un superutilisateur.

Documentation

ZZ9
la source
27

$ su - postgres
$ psql
$ \du;pour voir l'utilisateur sur db
sélectionner l'utilisateur que vous voulez être superutilisateur et:
$ ALTER USER "user" with superuser;

el fuser
la source
dans ce cas spécifique, vous devez mettre le nom d'utilisateur dans les comas, par exempleALTER USER "user" WITH SUPERUSER;
Carlos.V
9

Exécutez cette commande

alter user myuser with superuser;

Si vous souhaitez voir l'autorisation d'un utilisateur exécuter la commande suivante

\du
Chetan kapoor
la source
8

La mise à niveau vers un superutilisateur peut parfois ne pas être une bonne option. Donc, en plus du super utilisateur, il existe de nombreuses autres options que vous pouvez utiliser. Ouvrez votre terminal et saisissez ce qui suit:

$ 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

Énumérant également la liste des options

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'

Donc, en ligne de commande, cela ressemblera à

postgres=# ALTER USER my_user WITH  LOGIN

OU utilisez un mot de passe crypté.

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

OU révoquez les autorisations après un certain temps.

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

Vous pouvez créer un SUPERUSERou promouvoir USER, donc pour votre cas

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

ou restauration

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

Pour empêcher une commande de se connecter lorsque vous définissez le mot de passe, insérez un espace devant, mais vérifiez que votre système prend en charge cette option.

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