PostgreSQL - PRZYWILEJE
Za każdym razem, gdy w bazie danych tworzony jest obiekt, przypisywany jest do niego właściciel. Właściciel jest zwykle tym, który wykonał oświadczenie o stworzeniu. W przypadku większości rodzajów obiektów stan początkowy jest taki, że tylko właściciel (lub superużytkownik) może modyfikować lub usuwać obiekt. Aby umożliwić innym rolom lub użytkownikom korzystanie z niej, należy nadać im uprawnienia lub pozwolenie.
Różne rodzaje uprawnień w PostgreSQL to -
- SELECT,
- INSERT,
- UPDATE,
- DELETE,
- TRUNCATE,
- REFERENCES,
- TRIGGER,
- CREATE,
- CONNECT,
- TEMPORARY,
- EXECUTE i
- USAGE
W zależności od typu obiektu (tabela, funkcja itp.), Obiektowi nadawane są uprawnienia. Do przypisania uprawnień użytkownikom służy polecenie GRANT.
Składnia GRANT
Podstawowa składnia polecenia GRANT jest następująca -
GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
privilege - wartościami mogą być: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.
object- nazwa obiektu, do którego ma zostać udzielony dostęp. Możliwe obiekty to: tabela, widok, sekwencja
PUBLIC - Krótki formularz przedstawiający wszystkich użytkowników.
GRUPA group - grupa, której mają zostać przyznane uprawnienia.
username- nazwa użytkownika, któremu nadać uprawnienia. PUBLICZNY to krótki formularz reprezentujący wszystkich użytkowników.
Uprawnienia można cofnąć za pomocą polecenia REVOKE.
Składnia REVOKE
Podstawowa składnia polecenia REVOKE jest następująca -
REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
privilege - wartościami mogą być: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.
object- nazwa obiektu, do którego ma zostać udzielony dostęp. Możliwe obiekty to: tabela, widok, sekwencja
PUBLIC - Krótki formularz przedstawiający wszystkich użytkowników.
GRUPA group - grupa, której mają zostać przyznane uprawnienia.
username- nazwa użytkownika, któremu nadać uprawnienia. PUBLICZNY to krótki formularz reprezentujący wszystkich użytkowników.
Przykład
Aby zrozumieć uprawnienia, najpierw utwórzmy UŻYTKOWNIKA w następujący sposób -
testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE
Komunikat CREATE ROLE wskazuje, że utworzono UŻYTKOWNIKA „manisha”.
Rozważ poniższą tabelę FIRMA zawierająca rekordy -
testdb# select * from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | Paul | 32 | California| 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall| 45000
7 | James | 24 | Houston | 10000
(7 rows)
Następnie nadajmy wszystkie uprawnienia na stole COMPANY użytkownikowi „manisha” w następujący sposób -
testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT
Komunikat GRANT wskazuje, że wszystkie uprawnienia są przypisane do UŻYTKOWNIKA.
Następnie cofnijmy przywileje UŻYTKOWNIKOWI „manisha” w następujący sposób -
testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE
Komunikat REVOKE wskazuje, że wszystkie uprawnienia zostały odebrane UŻYTKOWNIKOWI.
Możesz nawet usunąć użytkownika w następujący sposób -
testdb=# DROP USER manisha;
DROP ROLE
Komunikat DROP ROLE wskazuje, że USER „Manisha” został usunięty z bazy danych.