PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zmienić użytkownika na superużytkownika w PostgreSQL?

  • Tworzenie nowego użytkownika
  • Wyświetlanie istniejących uprawnień użytkownika
  • Zmienianie istniejących uprawnień użytkownika
    • Przypisywanie SUPERUSER Zezwolenie
    • Odwoływanie uprawnień

Modyfikowanie uprawnień użytkownika w PostgreSQL może wahać się od raczej prostych do bardzo złożonych, w zależności od wymaganej szczegółowości zezwalającej. Jednak w większości przypadków jest to potężny ALTER USER polecenie, które powinno być używane do robienia wszystkiego, od umożliwienia użytkownikom logowania, tworzenia baz danych, zarządzania rolami, a nawet zostania SUPERUSER konto.

Pokrótce przyjrzymy się możliwościom ALTER USER polecenie, dzięki czemu można łatwo wykonać różne przypisania i usunięcia uprawnień, gdy zajdzie taka potrzeba.

Tworzenie nowego użytkownika

Zanim przejdziemy do zmiany uprawnienia użytkownika, powinniśmy założyć nowe konto użytkownika (powszechnie określane jako ROLE ) do zabawy.

Na początek wymienimy wszystkich istniejących użytkowników:

=# SELECT usename FROM pg_user;
 usename
----------
 postgres
(1 row)

Domyślnie postgres jest zazwyczaj jedynym istniejącym użytkownikiem, więc chcemy utworzyć nowego użytkownika librarian do kontrolowania naszej library Baza danych. Można to zrobić za pomocą CREATE USER polecenie:

=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
  usename
-----------
 postgres
 librarian
(2 rows)

Wyświetlanie istniejących uprawnień użytkownika

Często przydatne może być zbadanie istniejących uprawnień przydzielonych użytkownikom w systemie. Można to łatwo osiągnąć za pomocą \du polecenie z psql monit:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Widać to wyraźnie, mimo że dodaliśmy nowego librarian użytkownika, musimy przypisać mu pewne uprawnienia.

Zmiana istniejących uprawnień użytkownika

Teraz, gdy nasz librarian użytkownik istnieje, możemy zacząć używać ALTER USER aby zmodyfikować uprawnienia przyznane librarian .

Podstawowy format ALTER USER zawiera nazwę użytkownika (lub ROLE ), po której następuje seria options aby poinformować PostgreSQL, jakie dopuszczalne zmiany należy wprowadzić:

=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;

Te opcje wahają się od CREATEDB , CREATEROLE , CREATEUSER , a nawet SUPERUSER . Ponadto większość opcji ma również negatywny odpowiednik, informujący system, że chcesz odrzucić użytkownikowi to konkretne uprawnienie. Te nazwy opcji są takie same jak ich odpowiedniki przypisania, ale są poprzedzone NO (np. NOCREATEDB , NOCREATEROLE , NOSUPERUSER ).

Przypisywanie SUPERUSER Zezwolenie

Teraz, gdy rozumiemy podstawy tworzenia użytkowników i używania ALTER USER aby zmodyfikować uprawnienia, możemy po prostu użyć SUPERUSER możliwość przypisania naszego librarian użytkownik SUPERUSER pozwolenie:

=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE

Oczywiście, jeśli teraz wyświetlimy naszą listę uprawnień, zobaczymy librarian ma nowego SUPERUSER pozwolenie, którego potrzebujemy:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian | Superuser                                      | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Cofnięcie uprawnień

W przypadku popełnienia błędu i przypisania uprawnień, które później chcemy cofnąć, po prostu wydaj to samo ALTER USER polecenie, ale dodaj NO prefiks przed dozwolonymi opcjami, które mają zostać unieważnione.

Na przykład możemy usunąć SUPERUSER od naszego librarian taki użytkownik:

=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wdrażanie Django do Heroku (błąd Psycopg2)

  2. Jak korzystać z pg_stat_activity?

  3. Operator nie istnieje:liczba całkowita =? podczas korzystania z Postgresa

  4. wykonywanie operacji związanych z datami w PHP

  5. IN kontra DOWOLNY operator w PostgreSQL