오늘은 포스트그레SQL에서 특정 테이블에 대해서
권한이 있는지 확인 및 권한 부여 방법에 대해서 정리를 해보고자 합니다.
제가 이번에 신규 테이블을 하나 추가를 해보았습니다.
그리고 프로그램에서 insert를 하려고 하는데 에러가 나더라고요.
그래서 확인해본 결과 프로그램에서 쓰는 계정에는
insert 권한이 없어서 그런 것이였습니다.
그래서 오늘은 PostgreSQL에서 특정 Table에 대해서
특정 계정에 대한 권한 확인 및 권한 부여 방법에 대해서
확인을 해보도록 하겠습니다.
1. 권한 확인
우선 특정 계정이 가지고 있는 권한에 대해서
확인을 해보도록 하겠습니다.
쿼리는 다음과 같습니다.
select *
from information_schema.role_table_grants
where grantee = '계정명'
;
위처럼 쿼리를 작성해주시면 되십니다.
그러면 해당 계정에 대해서 권한이 어떻게 설정되어 있는지 확인하는 것입니다.
위처럼 쿼리를 작성하고
실행을 하게 되면 결과는 아래처럼 나오게 됩니다.
위처럼 결과가 나오게 됩니다.
해당 계정에 대해서 권한이 어떻게 있는지 나오게 되는 것입니다.
각각 컬럼에 대한 정보는 다음과 같습니다.
- Grantor : 권한을 부여한 role
- Grantee : 권한을 부여받은 role
- Table_schema : 스키마명
- Table_name : 테이블명
- Privilege_type : 권한의 유형
- Is_grantable : 권한을 줄 수 있을 경우 YES, 아닐 경우 NO
위처럼 되어있습니다.
테이블명이나 스키마명, 권한을 부여한 롤과 받은 롤 등
여러가지 정보를 확인할 수 있습니다.
위 쿼리를 이용하여
특정 계정이 특정 테이블에 대해서
권한을 어떻게 가지고 있는지 확인해보도록 하겠습니다.
쿼리는 아래처럼 작성을 해주시면 되십니다.
위 쿼리에서 테이블명에 대한 조건만 더 추가를 한 것입니다.
select * from information_schema.role_table_grants
where grantee = '계정명'
and table_name = '테이블명'
;
위처럼 쿼리를 작성해주시면 특정 계정에 대해서 특정 Table에 대해서
권한이 어떻게 있는지 확인할 수 있습니다.
쿼리를 위처럼 작성해보았습니다.
그리고 실행을 하게 되면
결과는 아래처럼 나오게 됩니다
위처럼 결과가 나왔습니다.
select 권한만 있는 것으로 확인이 되었습니다.
2. insert 하기
그래도 혹시 모르니 insert를 한번 해보도록 하겠습니다.
insert를 하기 위해서 아래처럼 쿼리를 작성해보았습니다.
insert into 테이블명 values
('1111111112', '111111', '001', '11111', now(), '11111', now())
;
그냥 제가 만든 테이블에 insert를 하는 쿼리입니다.
기본적인 insert 문입니다.
위처럼 쿼리를 작성하였습니다.
그리고 실행을 하면 결과는 아래처럼 나와지는 것을
확인할 수 있습니다.
위처럼 에러가 발생되면서 insert가 안되는 것을 확인할 수 있습니다.
insert 권한이 없기 때문에 에러가 발생하는 것입니다.
3. 권한 부여
이제 권한을 부여해보도록 하겠습니다.
권한을 부여하는 쿼리는 다음과 같습니다.
GRANT UPDATE, delete, insert ON "table_name" TO "username"
;
위처럼 쿼리를 작성해주시면 되십니다.
위처럼 하게 되면 update, delete, insert 권한을 부여하는 것입니다.
특정 테이블에 대해서 특정 계정에 대해서 권한을 부여하는 것입니다.
위처럼 쿼리를 작성하였고 실행을 하면
결과는 아래처럼 나오게 됩니다.
위처럼 정상적으로 적용이 되었다고 나오고 있습니다.
4. 권한 부여 결과 확인
이제 권한을 부여한 것에 대한 결과를 확인해보도록 하겠습니다.
1번에서 돌렸던 쿼리를 다시 돌려보도록 하겠습니다.
위 쿼리를 돌려보도록 하겠습니다.
아까는 select만 있는 것으로 나왔었는데
지금 위 쿼리를 다시 실행하게 되면 결과는 아래처럼 나오게 됩니다.
위처럼 select뿐 아니라
insert, update, delete까지 모두 권한이 있는 것으로
확인이 되고 있습니다.
권한 부여가 정상적으로 된 것으로 확인이 되었습니다.
이제 insert를 다시 테스틀 해보도록 하겠습니다.
2번에서 돌렸는데 에러가 났던 쿼리를
다시 돌려보도록 하겠습니다
위 쿼리를 다시 돌려보도록 하겠습니다.
그러면 결과는 아래처럼 나오게 됩니다.
insert에 성공했다고 결과가 나오는 것을
확인할 수 있습니다.
그러면 이제 select를 해서 정상적으로 insert가 된 것인지
확인해보도록 하겠습니다.
쿼리를 아래처럼 작성해보았습니다.
select * from 테이블명
where ord_id = '1111111112'
;
그냥 아까 넣은 테이블에 대해서
ord_id값으로 select 하는 것입니다.
위처럼 작성을 하였습니다.
그리고 실행을 하게 되면
결과는 아래처럼 나오게 됩니다.
위처럼 select 한 것이 정상적으로 나오는 것을 확인할 수 있습니다.
오늘은 PostgreSQL에서 특정 Table에 대해서
특정 계정의 권한이 어떻게 있는지 확인하고,
insert, update, delete 등 권한을 부여하는 방법에 대해서 정리를 해보았습니다.
저처럼 신규 테이블을 생성했는데
권한이 없어서 안되는 경우에
위와 같은 방식으로 권한을 부여하고 설정해주시면 되실 것 같습니다.
이상으로 포스트그레SQL에서 특정 테이블 권한 확인 및 insert 등 권한 부여(설정)하는 방법이였습니다~
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'컴퓨터관련 > postgreSQL' 카테고리의 다른 글
[PostgreSQL]포스트그레 인덱스 생성, 확인, 삭제하기 (0) | 2024.03.06 |
---|---|
[PostgreSQL]포스트그레DB에서 계정별 테이블 권한 확인 및 설정 (0) | 2023.06.22 |
[postgreSQL]포스트그레SQL 날짜 및 시간 계산 (0) | 2023.06.01 |
[PostgreSQL]포스트그레 캐릭터셋 확인하기 (0) | 2022.10.18 |