보통 개발 단계에서는
Superuser 권한을 갖고 있는 계정으로 database를 사용하곤 한다. (나만 그런가?)
당연히 그 누구도 추천하지 않는, 바람직하지 않은 계정 사용법이다.
그러면 적절한 권한을 갖고 있는 개발용 계정을 생성해서 사용해야하고
그래서 지금은 계정 생성 및 삭제, 권한 부여 방법 등에 대해서 살펴볼 시간이다.
0. Environment
- [PostgreSQL을 Docker로 설치하자](https://www.whatwant.com/entry/PostgreSQL-Docker)
1. psql
- docker 환경에 특화된 내역이긴 하지만, 기록 차원에서 남긴다.
❯ docker exec -it postgres /bin/bash root@d0b1fa1bb2b1:/# psql -U postgres psql (14.2 (Debian 14.2-1.pgdg110+1)) Type "help" for help. postgres=# |
2. 계정 및 권한 확인
- `\du`
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} |
3. 계정 생성
- `CREATE USER [username] WITH LOGIN PASSWORD '[password]';`
postgres=# CREATE USER whatwant WITH LOGIN PASSWORD 'xxxxxxxx'; CREATE ROLE postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} whatwant | | {} |
▶ Attributes of ROLE
- 기본값은 `NO-` 속성들이다.
SUPERUSER or NOSUPERUSER | SUPERUSER 여부 |
CREATEDB or NOCREATEDB | DATABASE를 만들 수 있는 권한 |
CREATEROLE or NOCREATEROLE | ROLE을 만들 수 있는 권한 |
LOGIN or NOLOGIN | LOGIN 허용 여부 |
INHERIT or NOINHERIT | 상속 가능 여부 |
REPLICATION or NOREPLICATION | 복제 권한 |
BYPASSRLS or NOBYPASSRLS | RLS(Row-Level Security) 무시 여부 |
PASSWORD [password] | 패스워드 |
VALID UNTIL [timestamp] | 패스워드의 유효기간 |
IN ROLE [role_name] or IN GROUP [role_name] | 지정한 ROLE의 구성원으로 포함 |
ROLE [role_name] or GROUP [role_name] | 지정한 ROLE 부여 |
ADMIN [role_name] | 윗 줄의 ROLE 속성 + WITH ADMIN |
4. 권한 부여
- DATABASE를 하나 생성하고 그에 따른 권한을 부여해보자
postgres=# CREATE DATABASE my_db WITH OWNER whatwant ENCODING 'UTF8'; CREATE DATABASE postgres=# GRANT ALL PRIVILEGES ON DATABASE my_db TO whatwant; GRANT |
▶ Permission
- 잘 모르는 내용도 있지만, 일단 리스트업 해본다.
SELECT | 데이터 조회. UPDATE/DELETE 하려면 포함 필요 |
INSERT | 데이터 추가 |
UPDATE | 데이터 수정 |
DELETE | 데이터 삭제 |
TRUNCATE | 데이터 모두 삭제 |
REFERENCES | 외래키 제약 조건 생성 |
TRIGGER | 트리거 |
CREATE | 스키마 생성 |
CONNECT | 데이터베이스 연결 |
TEMPORARY | 임시 테이블 생성 |
EXECUTE | 함수/프로시저 연산자 허용 |
USAGE | 스키마 객체 접근 허용 |
ALL PRIVILEGES | 모든 권한 |
pgAdmin4로 확인해보자.
여기까지...
'Dev Tools > Database' 카테고리의 다른 글
벡터 데이터베이스 파인콘 맛보기 (Vector Database Pinecone) (0) | 2023.12.17 |
---|---|
Redis 맛보기 (Docker로 Redis 설치해보기) (0) | 2022.07.10 |
pgAdmin4를 Docker로 설치하자 (PostgreSQL Tools) (0) | 2022.03.21 |
PostgreSQL을 Docker로 설치하자 (0) | 2022.03.21 |
MongoDB Install (몽고DB 설치하기) (0) | 2020.03.15 |