반응형
# PostgreSQL 데이터베이스 Role
- PostgreSQL은 Role 이라는 개념을 사용하여 데이터베이스 엑세스 권한을 관리함
- Role 의 개념은 "사용자" 및 "그룹" 개념을 포함함
- 오라클처럼 user와 role이 분리된 개념이 아니라, user=role 느낌으로 사용됨
# 먼저 기존 계정들의 Role을 조회해보자
- psql에 수퍼유저(postgres)로 접속
1
2
3
4
5
6
|
postgres=# \du
롤 목록
롤 이름 | 속성 | 소속 그룹:
----------+------------------------------------------------+------------
postgres | 슈퍼유저, 롤 만들기, DB 만들기, 복제, RLS 통과 | {}
red | DB 만들기, 복제 | {}
|
cs |
- \du 입력
- 관리자계정(postgres)으로 접속하여야 권한 생성과 Role 추가가 가능하므로 postgres로 접속한다.
- 현재 postgres, red 계정이 있다.
1
2
3
4
5
|
postgres=# SELECT * FROM pg_shadow;
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+-----------
postgres | 10 | t | t | t | t | md53175bce1d3201d16594cebf9d7eb3f9d | |
red | 97387 | t | f | t | f | md542c3a4a0281e61ee592e36a3eda020f2 | |
|
cs |
- SELECT * FROM pg_shadow;
- \du 명령어 외에 쿼리문을 입력하여 pg_shadow 테이블에서 계정정보를 읽어올 수 있다.
# CREATE USER 문에 옵션을 추가해 계정 생성, Role 추가를 동시에 하자
- CREATE USER 계정이름 WITH Role_1 Role_2 Role_3 ;
형태로 지정 계정 생성과 계정에 Role 추가를 동시에 할 수 있다.
1
|
postgres=# CREATE USER yellow WITH CREATEDB REPLICATION PASSWORD 'yellow';
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
CREATE USER name [ [ WITH ] option [ ... ] ]
where option can be:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
| USER role_name [, ...]
| SYSID uid
|
cs |
- 기본 형태는 CREATE USER name [ [ WITH ] option [ ... ] ] 이다. 계정을 생성할 때 해당 계정에 옵션을 추가할 때 WITH 문을 사용하여 '옵션항목'을 추가해 준다.
# 생성한 yellow 계정의 Role 확인하기
1
2
3
4
5
6
7
|
postgres=# \du
롤 목록
롤 이름 | 속성 | 소속 그룹:
----------+------------------------------------------------+------------
postgres | 슈퍼유저, 롤 만들기, DB 만들기, 복제, RLS 통과 | {}
red | DB 만들기, 복제 | {}
yellow | DB 만들기, 복제 | {}
|
cs |
- \du 입력
- 새로 생성한 yellow 계정에 DB 만들기(CREATEDB), 복제(REPLICATION) Role 이 추가되어 생성된 것을 확인 할 수 있다.
1
2
3
4
5
6
|
postgres=# SELECT * FROM pg_shadow;
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+-----------
postgres | 10 | t | t | t | t | md53175bce1d3201d16594cebf9d7eb3f9d | |
red | 97387 | t | f | t | f | md542c3a4a0281e61ee592e36a3eda020f2 | |
yellow | 97389 | t | f | t | f | md5d3499d1fde70bb924b0201cc8faa598d | |
|
cs |
- SELECT * FROM pg_shadow;
- 해당 쿼리문으로 조회를 하면 더 자세한 정보를 알 수 있다.
# CREATE USER 문에 사용가능한 옵션에 대해 알아보자
- 옵션의 종류는 16가지이다.
- 옵션을 여러개 쓸 경우, 옵션 사이에 콤마(,)를 넣지 않고 공백만을 둔다.
ex) WITH CREATEDB CREATEROLE PASSWORD 'yellow'; - 옵션을 지정하지 않았을 경우 의미가 각각 다르므로 확인하도록 하자.
- 옵션의 종류와 의미는 다음과 같다.
옵션명 | 설명 | |||||||||||
수퍼 유저 |
SUPERUSER |
|
||||||||||
NOSUPERUSER |
|
|||||||||||
데이터 베이스 생성 |
CREATEDB |
|
||||||||||
NOCREATEDB |
|
|||||||||||
Role 생성 |
CREATEROLE |
|
||||||||||
NOCREATEROLE |
|
|||||||||||
권한 상속 여부 |
INHERIT |
|
||||||||||
NOINHERIT |
|
|||||||||||
로그인 가능 |
LOGIN |
|
||||||||||
NOLOGIN |
|
|||||||||||
복제 | REPLICATION |
|
||||||||||
NOREPLICATION |
|
|||||||||||
RLS 적용 |
BYPASSRLS |
|
||||||||||
NOBYPASSRLS |
|
|||||||||||
동시 접속자 수 제한 |
CONNECTION LIMIT connlimit |
|
||||||||||
패스워드 사용여부 |
[ENCRYPTED] PASSWORD password |
|
||||||||||
패스워드 유효기간 |
VALID UNTIL timestamp |
|
||||||||||
ROLE |
IN ROLE role_name |
|
||||||||||
IN GROUP role_name |
|
|||||||||||
ROLErole_name |
|
|||||||||||
ADMIN role_name |
|
|||||||||||
USER role_name |
|
|||||||||||
UID | SYSID uid |
|
# CREATE USER VS. CREATE ROLE
- 두 구문의 차이점은 무엇일까?
123 postgres=> CREATE USER user01 WITH PASSWORD 'user01';postgres=> CREATE ROLE user01 WITH LOGIN PASSWORD 'user01';cs 위의 두 구문은 같은 의미이다.
즉, CREATE USER 는 CREATE ROLE 구문에 로그인(LOGIN) 역할이 추가 된 것이다.
반응형
'DB > PostgreSQL' 카테고리의 다른 글
shp2pgsql로 PostgreSQL에 shp 파일 import 하기 (10) | 2020.06.16 |
---|---|
윈도우서버에서 PostgreSQL 외부접속 가능하게 설정하는 방법 (0) | 2020.06.14 |
PostgreSQL 계정 생성, Role 추가하기(psql 이용) - 1 (0) | 2020.06.04 |
PostgreSQL 처음 접속하기(shell 스크립트 사용 vs. pgAdmin4 사용) (0) | 2020.06.04 |
PostgreSQL(Ver.10.13) 설치하는 방법 (0) | 2020.05.19 |