Всем привет!
Выдаю права на чтение системных таблиц для пользователя postgresql так:
psql -U postgres -d userdb -c \"GRANT SELECT ON pg_settings TO user;\"
В результате получилась такая таблица выданных прав:
userdb=> SELECT * FROM information_schema.role_table_grants;
grantor | grantee | table_catalog | table_schema | table_name | privilege_type | is_grantable | with_hierarchy
----------+----------+---------------+--------------+-------------+----------------+--------------+----------------
postgres | user | userdb | pg_catalog | pg_settings | SELECT | NO | YES
postgres | user | userdb | pg_catalog | pg_shadow | SELECT | NO | YES
postgres | user | userdb | pg_catalog | pg_authid | SELECT | NO | YES
postgres | user | userdb | pg_catalog | pg_database | SELECT | NO | YES
(4 rows)
Как правильно отозвать права пользователю postgresql на чтение системных таблиц ?
userdb=> REVOKE SELECT FROM information_schema.role_table_grants WHERE table_name='pg_settings' ;
ERROR: syntax error at or near "."
LINE 1: REVOKE SELECT FROM information_schema.role_table_grants WHER...
^
userdb=> REVOKE SELECT ON information_schema.role_table_grants WHERE table_name='pg_settings' FROM user ;
ERROR: syntax error at or near "WHERE"
LINE 1: ...KE SELECT ON information_schema.role_table_grants WHERE tabl...
^
userdb=> REVOKE SELECT ON information_schema.role_table_grants WHERE table_name='pg_settings' FROM 'user' ;
ERROR: syntax error at or near "WHERE"
LINE 1: ...KE SELECT ON information_schema.role_table_grants WHERE tabl...
^
userdb=> REVOKE SELECT FROM information_schema.role_table_grants WHERE table_name='pg_settings' ;
ERROR: syntax error at or near "."
LINE 1: REVOKE SELECT FROM information_schema.role_table_grants WHER...