Wprowadzenie do PostgreSQL Lista użytkowników
w dowolnej bazie danych, musimy utworzyć i mieć wielu użytkowników, którzy mogą uzyskać dostęp do bazy danych. Każdy użytkownik powinien mieć określone uprawnienia dostępu i powinien być upoważniony, użytkownik. Domyślnie serwer baz danych PostgreSQL ma domyślnego użytkownika o nazwie Postgres. Jest to superużytkownik, który ma wszystkie prawa i przywileje przyznane dla wszystkich baz danych i tabel. Może sam tworzyć nowych użytkowników i przypisywać im role, przyznawać i cofać uprawnienia innym użytkownikom i tak dalej. Często superużytkownik lub administrator bazy danych musi wiedzieć o wszystkich użytkownikach obecnych na bieżącym serwerze bazy danych. W tym artykule dowiemy się, jak możemy wyświetlić listę wszystkich użytkowników obecnych na naszym aktualnym serwerze bazy danych. Zacznijmy od zbadania, gdzie dane związane z użytkownikiem są przechowywane i manipulowane w bazie danych.
użytkownicy listy PostgreSQL
Poniżej znajdują się trzy różne użytkownicy listy:
rozpocznij bezpłatny kurs Data Science
Hadoop, Data Science, Statistics & inne
1. Dane użytkownika w PostgreSQL
wszystkie dane związane z użytkownikiem są przechowywane w tabeli o nazwie pg_user, która należy do schematu o nazwie pg_catalog. Ta tabela zawiera wszystkie informacje, takie jak username, usesysid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil i useconfig. Username, usesysid i passwd to nazwa, identyfikator i hasło przechowywane w systemie szyfrowania skrótu md5 użytkownika. Jednocześnie wszystkie inne parametry są parametrami logicznymi, które określają, czy użytkownik ma takie uprawnienia, na przykład usesuper, który określa, czy użytkownik jest superużytkownikiem, czy nie. Jeśli tak, to zawiera wartość t, która oznacza true else f, która oznacza false. Zobaczmy, co oznaczają wszystkie inne pobrane pola w praktyce.
- Usecreatedb: to pole mówi nam, czy dany użytkownik może utworzyć nową bazę danych i ma do tego uprawnienia.
- Userepl: możemy tworzyć replikacje pojedynczej tabeli w wielu innych bazach danych. Tylko konkretny użytkownik, który ma takie uprawnienia, może to zrobić. W związku z tym, jeśli użytkownik ma uprawnienia do tworzenia nowych replik, to pole jest ustawione na true.
- Usebypassrls: To pole jest ustawione na true tylko wtedy, gdy użytkownik może ominąć RLS
najpierw zobaczymy, jak możemy pobrać informacje związane z użytkownikiem z tabeli pg_user. Będziemy musieli zbudować nasze zapytanie w następujący sposób –
Kod:
SELECT * FROM pg_catalog.pg_user;
wyjście:
jeśli chcesz tylko uzyskać listę użytkowników zawierającą jej nazwy, możesz odpalić następujące zapytanie.
Kod:
SELECT usename FROM pg_catalog.pg_user;
Wyjście:
2. Korzystanie z MetaCommands
PostgreSQL zapewnia nam wspaniałe narzędzie o nazwie psql, gdzie możemy używać metaCommands. MetaCommands to krótkie gotowe narzędzia, które są dostępne do użycia, dzięki czemu praca administratora bazy danych jest bardzo łatwa. Do pobierania danych związanych z użytkownikiem \, du jest poleceniem meta, które można użyć. W tym celu należy użyć wiersza polecenia psql w PostgreSQL. Odpalmy tę komendę i zobaczmy, jaki wynik otrzymujemy:
Kod:
\du
wyjście:
- tutaj Nazwa roli jest nazwą użytkownika. Lista ról, tj. atrybuty, które są rolami, które dany użytkownik ma dla siebie. Superuser, Create role, Create DB, Replication, Bypass RLS to reguły przypisane do superusera, co oznacza, że superuser może tworzyć nowe role i użytkowników, tworzyć nowe bazy danych, wykonywać replikacje istniejących obiektów i ominąć RLS.
- pole”członek” określa, czy użytkownik jest członkiem dowolnej grupy. W PostgreSQL administrator bazy danych może tworzyć wiele grup i dodawać różnych użytkowników do różnych grup, co pomaga mu prawidłowo zarządzać użytkownikami podczas krat i cofania uprawnień. Jeśli istnieją takie grupy i ten konkretny użytkownik należy do określonej grupy, to nazwa tej grupy jest wyświetlana przed tym użytkownikiem w polu członek kolumny.
- ten metaCommands wewnętrznie uruchamia zapytanie do tabeli pg_catalog.pg_user, aby pobrać informacje o użytkowniku. Tutaj otrzymujemy nazwę roli jako nazwę Użytkownika, a lista atrybutów ról pomaga nam wiedzieć, które uprawnienia są przyznawane temu konkretnemu użytkownikowi, podczas gdy członek pola mówi nam, czy użytkownik jest członkiem określonej grupy, jeśli jest obecny. Zapytanie, które wewnętrznie zostaje odpalone po użyciu \du metacommand, jest nieco podobne do poniższej instrukcji zapytania:
Kod:
SELECT u.usename AS "Role name",
CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('Create DB, Superuser' AS pg_catalog.text)
WHEN u.usesuper THEN CAST('Superuser' AS pg_catalog.text) WHEN u.usecreatedb THEN CAST('Create DB' AS pg_catalog.text)
ELSE CAST('' AS pg_catalog.text) END AS "Attributes"
FROM pg_catalog.pg_user u ORDER BY 1;
3. Używanie pg_shadow
jeszcze jednym sposobem na uzyskanie listy użytkowników jest użycie tabeli pg_shadow, która zawiera również informacje o użytkownikach na serwerze PostgreSQL. Ta tabela jest przechowywana dla wstecznej kompatybilności dla wersji PostgreSQL, które są poprzednie do 8.1. Ta tabela przechowuje role, które mogą się zalogować i oznaczyć rolcanlogin jako 1 w tabeli pg_authid. Pg_user to Widok utworzony na bazie tabeli pg_shadow, który jest dostępny publicznie. pg_shadow jest dostępne tylko dla superużytkownika. pg_user view zawiera pole hasła jako puste, aby zachować bezpieczeństwo. Tabela PG_ shadow zawiera pola username, usesysid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil oraz useconfig dla wszystkich użytkowników serwera bazy danych.
Kod:
SELECT * FROM pg_shadow;
wyjście:
select usesysid as "Id of User", usename as "User Name",
usesuper as "Whether User Is SuperUser", passwd as "Md5 Encrypted Password", valuntil as "Expiry of Password"
from pg_shadow order by usename;
wyjście:
wniosek
w serwerze bazy danych PostgreSQL możemy pobrać informacje o użytkowniku poprzez pobranie rekordów z tabeli pg_user, która należy do schematu pg_catalog. Jeszcze jednym sposobem jest użycie meta-komendy \ du, która wewnętrznie odpala zapytanie na samej tabeli pg_user. Poza tym istnieje jeszcze jedna tabela o nazwie pg_shadow, która przechowuje informacje o użytkownikach i może być dalej używana do listy wszystkich użytkowników w serwerze bazy danych PostgreSQL. Należy zauważyć, że zakres wszystkich tych metod jest całym serwerem bazy danych.
Polecane artykuły
jest to przewodnik dla użytkowników listy PostgreSQL. Tutaj omówimy dane użytkownika, użytkownika metaCommand i użytkownika pg_shadow z przykładami do zaimplementowania. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej–
- PostgreSQL Pobierz
- klucz obcy w PostgreSQL
- tabela PostgreSQL
- zapytania | wprowadzenie | przykłady PostgreSQL
- REGEXP_MATCHES () PostgreSQL
- Przewodnik po REGEXP SQL