특정 데이터베이스의 특정 스키마에 대한 읽기 전용 유저 생성 방법
1. PostgreSQL 접속
$ psql -U postgres
2. 유저 생성
create user <계정명> with password '<비밀번호>';
3. 해당 데이터베이스 접속
\c db_1;
4. 해당 스키마에 대한 USAGE 권한을 부여
GRANT USAGE ON SCHEMA schema_1 TO <계정명>;
5. 해당 스키마의 모든 테이블에 대한 SELECT 권한을 부여
GRANT SELECT ON ALL TABLES IN SCHEMA schema_1 TO <계정명>;
5-1. 필요한 경우 시퀀스에 대한 SELECT 권한을 부여
GRANT SELECT ON ALL SEQUENCES IN SCHEMA schema_1 TO <계정명>;
6. 권한 조회
테이블 권한 조회
select * from information_schema.role_table_grants where grantee = '<계정명>';
- Grantor : 권한을 부여한 role
- Grantee : 권한을 부여받은 role
- Table_schema : schema명
- Table_name : table명
- Privilege_type : 권한의 유형
- Is_grantable : 권한을 줄 수 있을 경우 YES, 아닐 경우 NO
스키마 권한 조회
WITH "names"("name") AS (
SELECT n.nspname AS "name"
FROM pg_catalog.pg_namespace n
WHERE n.nspname !~ '^pg_'
AND n.nspname <> 'information_schema'
) SELECT "name",
pg_catalog.has_schema_privilege('<계정명>', "name", 'CREATE') AS "create",
pg_catalog.has_schema_privilege('<계정명>', "name", 'USAGE') AS "usage"
FROM "names";
'Database > RDBMS' 카테고리의 다른 글
[PostgreSQL] 중복데이터 삭제 방법(중복데이터 하나만 남기고 제거) (0) | 2023.01.31 |
---|---|
[PostgreSQL] VIEW vs MVIEW(Materialized View) (0) | 2022.08.19 |
[PostgreSQL] JSON 컬럼에 특정 값만 추출해서 Index를 걸어보자 (0) | 2022.08.12 |