본문 바로가기
컴퓨터관련/postgreSQL

[PostgreSQL]포스트그레에서 특정 테이블 권한 확인 및 insert 등 권한 부여하기

by 빛과 어둠사이 2024. 3. 13.
728x90
반응형
SMALL

오늘은 포스트그레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 권한을 부여하는 것입니다.

특정 테이블에 대해서 특정 계정에 대해서 권한을 부여하는 것입니다.

 

 

 

위처럼 쿼리를 작성하였고 실행을 하면 

결과는 아래처럼 나오게 됩니다.

 

 

위처럼 정상적으로 적용이 되었다고 나오고 있습니다.

 

SMALL

 

 

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, 비제이퍼블릭

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

728x90
반응형
LIST