sql >> Databáze >  >> RDS >> PostgreSQL

CHYBA:oprávnění odepřeno pro vztah název_tabulky na Postgres při pokusu o SELECT jako uživatel pouze pro čtení

Zde je kompletní řešení pro PostgreSQL 9+, nedávno aktualizované.

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;

Děkujeme https://jamie.curle.io/creating-a-read-only-user-in-postgres/ za několik důležitých aspektů

Pokud někdo najde kratší kód, nejlépe takový, který je schopen to provést pro všechny existující databáze, velká sláva.



  1. CASCADE DELETE pouze jednou

  2. Používám sdružování připojení JDBC?

  3. Kód chyby 1292 – zkrácená nesprávná hodnota DOUBLE – Mysql

  4. Použití podmíněného příkazu UPDATE v SQL