PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

ГРЕШКА:разрешението е отказано за име на таблица за връзка в Postgres, докато се опитва SELECT като потребител само за четене

Ето цялостното решение за PostgreSQL 9+, актуализирано наскоро.

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;

Благодарение на https://jamie.curle.io/creating-a-read-only-user-in-postgres/ за няколко важни аспекта

Ако някой намери по-кратък код и за предпочитане такъв, който е в състояние да изпълни това за всички съществуващи бази данни, допълнителна похвала.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Уебинар:Нови функции в PostgreSQL 11 [Продължаване]

  2. Как да възстановим PostgreSQL дъмп файл в Postgres бази данни?

  3. Вертикално мащабиране на PostgreSQL

  4. IntegrityError:прави разлика между уникално ограничение и ненулеви нарушения

  5. Грешка при изпращане на данни към Heroku:изместване на часовата зона извън обхвата