0
pg_catalog.pg_cast
을 제한된 사용자 (Postgres 9.3)에서 업데이트하고 싶습니다.Postgres - pg_catalog.pg_cast 업데이트시 권한이 거부되었습니다.
update pg_cast set castcontext = 'i' where oid in (select c.oid from pg_cast c inner join pg_type src on src.oid = c.castsource inner join pg_type tgt on tgt.oid = c.casttarget where src.typname like 'int%' and tgt.typname like 'bool%');
오류와 함께 종료 :
그러나 내가 필요로하는 쿼리를 실행ERROR: permission denied for relation pg_cast
그러나 권한이 올바르게 설정 될 것으로 보인다. 쿼리까지의 I는 DB 이후 단계 및 사용자 생성을 참조하십시오 : 나는 무엇을 더해야
psql -c "create database test1 WITH ENCODING 'UTF8' LC_COLLATE='en_GB.UTF8' LC_CTYPE='en_GB.UTF8' TEMPLATE=template0;" -U postgres
psql -U postgres test1;
test1=# CREATE USER test1 PASSWORD 'test1';
test1=# GRANT ALL ON SCHEMA public TO test1;
test1=# GRANT ALL ON ALL TABLES IN SCHEMA public TO test1;
test1=# GRANT SELECT ON TABLE pg_catalog.pg_cast TO test1;
test1=# GRANT SELECT ON TABLE pg_catalog.pg_type TO test1;
test1=# GRANT UPDATE ON TABLE pg_catalog.pg_cast TO test1;
test1=# \q
sudo service postgresql-9.3 restart
PGPASSWORD=test1;psql -U test1 test1
test1=> \z pg_catalog.pg_cast
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
------------+---------+-------+-------------------+--------------------------
pg_catalog | pg_cast | table | =r/postgres +|
| | | test1=rw/postgres |
(1 row)
test1=> \z pg_catalog.pg_type
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
------------+---------+-------+-------------------+--------------------------
pg_catalog | pg_type | table | =r/postgres +|
| | | test1=r/postgres |
(1 row)
test1=> SELECT grantee, privilege_type FROM information_schema.role_table_grants WHERE table_name='pg_cast';
grantee | privilege_type
---------+----------------
test1 | SELECT
test1 | UPDATE
(2 rows)
test1=> update pg_cast set castcontext = 'i' where oid in (select c.oid from pg_cast c inner join pg_type src on src.oid = c.castsource inner join pg_type tgt on tgt.oid = c.casttarget where src.typname like 'int%' and tgt.typname like 'bool%');
ERROR: permission denied for relation pg_cast
의 test1
사용자와 쿼리 실행을 가능하게? 감사합니다. .
덕분에, 나는 인식하지 않았다. 그래서 카탈로그 업데이트 (권한있는 사용자에 의해 수행됨) 및 앱 사용자에게 읽기 전용 액세스 권한을 부여하는 솔루션으로 끝 맺었습니다. –