2012-06-23 11 views
1

데이터베이스 사용자의 권한을 취소하려고 시도하고 있으며 권한을 부여한 사용자 만 권한을 취소 할 수있는 것 같습니다. 문제를 논의하는 스레드가 있습니다. http://archives.postgresql.org/pgsql-bugs/2007-05/msg00234.phpPostgreSQL 쿼리 나 뷰로 누가 사용자 권한을 설정했는지 확인할 수 있습니까?

스레드가 2007 년으로 거슬러 올라간다. 버그가 있는지 여부와 문제가 여전히 내가 사용하고있는 PostgreSQL 8.4에 있는지 여부는 확실하지 않습니다.

해당 정보를 표시 할 수있는 쿼리 또는보기가 있습니까? 그렇게하면 set session authorization을 사용하고이를 취소 할 수 있습니다.

답변

2

PostgreSQL 8.4는 구식입니다. 자세한 내용은 versioning policy을 확인하십시오. 그러나 SQL의 표준 동작이므로 (사용자가 제공 한 링크 된 토론의 Tom Lane 상태와 마찬가지로) 변경되지는 않을 것입니다.

권한은 해당 오브젝트와 함께 시스템 + 탈 로그에 저장됩니다. 슬래시가 부여한 후 rolename

nspname | relname |     relacl 
----------+---------+--------------------------------------------- 
myschema | mytbl | {postgres=arwdDxt/postgres,fuser=r/fadmin} 

: 예를 들어, 테이블 :

SELECT n.nspname, c.relname, c.relacl 
FROM pg_catalog.pg_class c 
JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace 
WHERE c.oid = 'myschema.mytbl'::regclass -- your tablename here 

같은 것을 생산겠습니까. 사용자 fadmin (또는 수퍼 유저)로, 취소하려면 다른 시스템 테이블에서 유사 *acl 열이 있습니다

REVOKE SELECT ON TABLE myschema.mytbl FROM fuser; 

. 스키마 등 pg_namespacelist of system tables in the manual.


간단한 방법은 pgAdmin를 사용하고 왼쪽에있는 객체 브라우저에서 객체를 선택하는 것입니다 참조하십시오. ACL이 오른쪽 상단의 등록 정보 창에 표시됩니다.