postgres: einen Benutzer zum Superuser upgraden?

643

Wie ändere ich in postgres einen vorhandenen Benutzer in einen Superuser? Ich möchte den vorhandenen Benutzer aus verschiedenen Gründen nicht löschen.

# alter user myuser ...?
Flossfan
quelle

Antworten:

1261
ALTER USER myuser WITH SUPERUSER;

Weitere Informationen finden Sie in der Dokumentation

Quassnoi
quelle
157
die entgegengesetzte Operation ist ALTER USER myuser WITH NOSUPERUSER
d.raev
2
und wie kann ich feststellen, ob myuser derzeit superuser ist?
meisterhaft
20
SELECT rolname, rolsuper FROM pg_roles;zu @masterweily
Caulfield
6
Ich bekomme: FEHLER: muss Superuser sein, um Superuser zu ändern
Stepan Yakovenko
15
@masterweily Sie können \dualle Benutzer / Rollen auflisten .
XåpplI'-I0llwlg'I -
63

Um das oben Gesagte zu erweitern und eine Kurzreferenz zu erstellen:

  • So machen Sie einen Benutzer zu einem SuperUser: ALTER USER username WITH SUPERUSER;
  • So machen Sie einen Benutzer nicht länger zum SuperUser: ALTER USER username WITH NOSUPERUSER;
  • So lassen Sie den Benutzer nur eine Datenbank erstellen: ALTER USER username CREATEDB;

Sie können Benutzerberechtigungen auch verwenden CREATEROLEund CREATEUSERzulassen, ohne sie zu einem Superuser zu machen.

Dokumentation

ZZ9
quelle
27

$ su - postgres
$ psql
$, \du;um den Benutzer auf db zu sehen,
wählen Sie den Benutzer aus, der Superuser sein soll, und:
$ ALTER USER "user" with superuser;

el fuser
quelle
In diesem speziellen Fall müssen Sie den Benutzernamen ins Koma setzen, BeispielALTER USER "user" WITH SUPERUSER;
Carlos.V
9

Führen Sie diesen Befehl aus

alter user myuser with superuser;

Wenn Sie die Berechtigung für einen Benutzer anzeigen möchten, führen Sie den folgenden Befehl aus

\du
Chetan kapoor
quelle
8

Manchmal ist ein Upgrade auf einen Superuser möglicherweise keine gute Option. Abgesehen von Superusern gibt es also viele andere Optionen, die Sie verwenden können. Öffnen Sie Ihr Terminal und geben Sie Folgendes ein:

$ 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

Listen Sie auch die Liste der Optionen auf

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'

In der Kommandozeile sieht es also so aus

postgres=# ALTER USER my_user WITH  LOGIN

ODER verwenden Sie ein verschlüsseltes Passwort.

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

ODER widerrufen Sie Berechtigungen nach einer bestimmten Zeit.

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

Sie können eine erstellen SUPERUSERoder fördern USER, also für Ihren Fall

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

oder Rollback

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

Fügen Sie ein Leerzeichen davor ein, um zu verhindern, dass ein Befehl beim Festlegen des Kennworts protokolliert wird. Überprüfen Sie jedoch, ob Ihr System diese Option unterstützt.

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