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

BŁĄD:odmowa uprawnień dla relacji nazwa tabeli w Postgresie podczas próby SELECT jako użytkownik tylko do odczytu

Oto kompletne rozwiązanie dla PostgreSQL 9+, ostatnio zaktualizowane.

CREATE USER readonly  WITH ENCRYPTED PASSWORD 'readonly';
GRANT USAGE ON SCHEMA public to readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;

-- repeat code below for each database:

GRANT CONNECT ON DATABASE foo to readonly;
\c foo
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly; --- this grants privileges on new tables generated in new database "foo"
GRANT USAGE ON SCHEMA public to readonly; 
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;

Podziękowania dla https://jamie.curle.io/creating-a-read-only-user-in-postgres/ za kilka ważnych aspektów

Jeśli ktoś znajdzie krótszy kod, a najlepiej taki, który jest w stanie wykonać to dla wszystkich istniejących baz danych, dodatkowe uznanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz dzień z daty w PostgreSQL

  2. Jak utworzyć użytkownika z uprawnieniami superużytkownika w PostgreSQL?

  3. Postgres:zdefiniować domyślną wartość dla niepowodzeń CAST?

  4. PostgreSQL GROUP_CONCAT() Odpowiednik

  5. Przekierowanie wstawiania oparte na wyzwalaczu Postgres bez przerywania RETURNING