Jak utworzyć użytkownika tylko do odczytu w PostgreSQL

W niektórych przypadkach w PostgreSQL konieczne jest utworzenie użytkownika, który będzie miał dostęp wyłącznie do odczytu danych z wybranej bazy danych. Jest to szczególnie przydatne dla użytkowników analitycznych, audytorów lub aplikacji, które nie powinny wprowadzać zmian w bazie.

Kroki do utworzenia użytkownika tylko do odczytu

1. Zaloguj się do PostgreSQL

Najpierw połącz się z bazą danych PostgreSQL jako administrator:

psql -U postgres

2. Utwórz nowego użytkownika

Stwórz nowego użytkownika, który będzie miał ograniczone uprawnienia. Właśnie tak możesz utworzyć użytkownika tylko do odczytu w PostgreSQL.

CREATE USER read_only_user WITH PASSWORD 'secure_password';

3. Nadaj dostęp do bazy danych

Przyznaj użytkownikowi możliwość łączenia się z określoną bazą danych:

GRANT CONNECT ON DATABASE my_database TO read_only_user;

4. Przyznaj dostęp do schematu

Jeśli użytkownik ma przeglądać tabele w określonym schemacie (np. public), musisz nadać mu odpowiednie uprawnienia:

GRANT USAGE ON SCHEMA public TO read_only_user;

5. Przyznaj uprawnienia do tabel

Nadaj uprawnienia do odczytu dla wszystkich istniejących tabel w schemacie.

GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only_user;

Aby nowy użytkownik miał automatycznie dostęp do przyszłych tabel:

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO read_only_user;

6. (Opcjonalnie) Przyznaj dostęp do widoków i sekwencji

Jeśli użytkownik ma mieć dostęp do widoków i sekwencji:

GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO read_only_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON SEQUENCES TO read_only_user;

Podsumowanie

Po wykonaniu tych kroków jak utworzyć użytkownika tylko do odczytu w PostgreSQL, użytkownik read_only_user będzie miał dostęp tylko do odczytu w bazie danych my_database. Nie będzie mógł modyfikować, usuwać ani dodawać rekordów, co zapewnia większe bezpieczeństwo i kontrolę nad danymi. W innym artykule opisano jak przebiega instalacja PostgreSQL 16 na Ubuntu

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *