postgres: zaktualizować użytkownika, aby był superużytkownikiem?

643

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

# alter user myuser ...?
flossfan
źródło

Odpowiedzi:

1261
ALTER USER myuser WITH SUPERUSER;

Możesz przeczytać więcej w Dokumentacji

Quassnoi
źródło
157
odwrotna operacja to ALTER USER myuser WITH NOSUPERUSER
śr.
2
i jak mogę sprawdzić, czy mój użytkownik jest obecnie superużytkownikiem?
mistrzowsko
20
SELECT rolname, rolsuper FROM pg_roles;do @masterweily
caulfield
6
Dostaję: BŁĄD: musi być superużytkownikiem, aby zmieniać superużytkowników
Stepan Yakovenko
15
@masterweily Możesz zrobić, \duaby wyświetlić listę wszystkich użytkowników / ról.
XåpplI'-I0llwlg'I -
63

Aby rozwinąć powyższe i zrobić szybkie odniesienie:

  • 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 po prostu zezwolić użytkownikowi na utworzenie bazy danych: ALTER USER username CREATEDB;

Możesz także użyć CREATEROLEi, CREATEUSERaby zezwolić użytkownikowi na uprawnienia, nie czyniąc go superużytkownikiem.

Dokumentacja

ZZ9
źródło
27

$ su - postgres
$ psql
$ \du;za zobacz użytkownika na db
wybierz użytkownika, który chcesz być superużytkownikiem i:
$ ALTER USER "user" with superuser;

el fuser
źródło
w tym konkretnym przypadku musisz wpisać nazwę użytkownika w przecinkach, na przykładALTER USER "user" WITH SUPERUSER;
Carlos.V
9

Uruchom to polecenie

alter user myuser with superuser;

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

\du
Chetan kapoor
źródło
8

Czasami uaktualnienie do superużytkownika może nie być dobrym rozwiązaniem. Więc oprócz superużytkownika istnieje wiele innych opcji, z których możesz skorzystać. Otwórz terminal i wpisz następujące polecenie:

$ 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

Wymienia również listę 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'

W wierszu poleceń będzie to wyglądać

postgres=# ALTER USER my_user WITH  LOGIN

LUB użyj zaszyfrowanego hasła.

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

LUB odwołaj uprawnienia po określonym czasie.

postgres=# ALTER USER my_user  WITH VALID UNTIL '2019-12-29 19:09:00';
Sandip Debnath
źródło
4

Możesz utworzyć SUPERUSERlub promować USER, więc w swoim przypadku

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

lub wycofać

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

Aby uniemożliwić rejestrowanie polecenia po ustawieniu hasła, wstaw przed nim biały znak, 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';"
Vasilii Suricov
źródło
4
alter user username superuser;
Bala
źródło