#amazon-rds #postgresql-9.6
#amazon-rds #postgresql-9.6
Вопрос:
PostgreSQL said: permission denied for relation pg_authid
pg_authid
Просто недоступен на AWS RDS во всех контекстах из-за того, что RDS блокирует super
роль? Моя роль создала таблицу, поэтому pg_catalog
она должна отображаться по умолчанию (и ее не нужно добавлять в путь поиска), если я правильно читаю документы psql. Просто нужна SELECT
, а не возможность создания.
Не удалось найти страницу документации AWS RDS, где говорится, что pg_catalog.pg_authid
это запрещено ни в каком контексте, но я унаследовал проект документации, который полагается на возможность формировать запросы и объединения в таблице pg_authid в БД, которую я только что создал. Я всегда получаю отказ в вышеуказанном разрешении.
Пытался добавить postgres
роль и присвоить ее себе, а также явно добавить базу данных в мой путь поиска, но безрезультатно.
Ответ №1:
Каталог pg_authid содержит информацию об идентификаторах авторизации в базе данных (ролях). Как вы, возможно, знаете, из-за управляемого характера RDS как сервиса, к сожалению, невозможно иметь полную роль суперпользователя в RDS.
К сожалению, поскольку вышеупомянутое является ограничением для RDS, если доступ к ‘pg_authid’ крайне необходим для выполнения вашего бизнеса, я бы посоветовал вам поискать Postgres, размещенный на EC2 (community Postgres), в качестве опции. Обходной путь для просмотра содержимого ‘pg_authid’ заключается в использовании ‘pg_roles’, но пароли замаскированы и не скажут вам, зашифрован он или нет.
Пожалуйста, обратите внимание, что не все каталоги ограничены для чтения на RDS, ниже приведен SQL-запрос, который показывает привилегии rds_superuser / главного пользователя в каждом каталоге.
SELECT relname, has_table_privilege('rds_superuser',relname,'SELECT') as SELECT,has_table_privilege('rds_superuser',relname,'UPDATE') as UPDATE,has_table_privilege('rds_superuser',relname,'INSERT') as INSERT,has_table_privilege('rds_superuser',relname,'TRUNCATE') as TRUNCATE FROM pg_class c , pg_namespace n where n.oid = c.relnamespace and n.nspname in ('pg_catalog') and relkind='r';