postgres: upgrade a user to be a superuser?

W postgres, jak zmienić istniejącego użytkownika na superużytkownika? Nie chcę usuwać istniejącego użytkownika z różnych powodów.

# alter user myuser ...?
Author: kqw, 2012-05-25

7 answers

ALTER USER myuser WITH SUPERUSER;
Więcej informacji można znaleźć w dokumentacji
 1307
Author: Quassnoi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-31 06:24:40

Aby rozwinąć powyższe i dokonać szybkiego odniesienia:

  • aby uczynić użytkownika superużytkownikiem: ALTER USER username WITH SUPERUSER;
  • aby użytkownik nie był już superużytkownikiem: ALTER USER username WITH NOSUPERUSER;
  • aby umożliwić użytkownikowi utworzenie bazy danych: ALTER USER username CREATEDB;

Możesz również użyć CREATEROLE i CREATEUSER, Aby zezwolić użytkownikowi na uprawnienia bez robienia z niego superużytkownika.

Dokumentacja

 66
Author: ZZ9,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 17:01:16

$ su - postgres
$ psql
$ \du; For see the user on db
Wybierz użytkownika, którego chcesz być superużytkownikiem i:
$ ALTER USER "user" with superuser;

 29
Author: el fuser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-18 10:16:50

Uruchom to polecenie

alter user myuser with superuser;

Jeśli chcesz zobaczyć uprawnienia użytkownika uruchom następujące polecenie

\du
 10
Author: Chetan kapoor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-08 15:48:49

Może być czasami aktualizacja do superużytkownika może nie być dobrym rozwiązaniem. Więc oprócz super user istnieje wiele innych opcji, które można użyć. Otwórz terminal i wpisz:

$ 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

Również lista opcji

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'

Więc w wierszu poleceń będzie wyglądać tak:

postgres=# ALTER USER my_user WITH  LOGIN

Lub użyć zaszyfrowanego hasła.

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

Lub cofnąć uprawnienia po określonym czasie.

postgres=# ALTER USER my_user  WITH VALID UNTIL '2019-12-29 19:09:00';
 8
Author: Sandip Debnath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-27 15:15:08

Możesz utworzyć SUPERUSER lub promować USER, więc dla Twojego przypadku

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

Lub rollback

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

aby zapobiec rejestrowaniu polecenia podczas ustawiania hasła, Wstaw przed nim białą spację, ale sprawdź, czy system obsługuje tę opcję.

$  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';"
 5
Author: Vasilii Suricov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-11 12:11:35
alter user username superuser;
 4
Author: Bala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-17 10:36:17