※ PostgreSQL12 를 사용한 환경입니다.
1. User 생성 (superuser 로 생성)
postgres=# create user new_user password 'new_password' superuser;
CREATE ROLE
생성시 아래의 방법으로 추가적인 ROLE 을 부여할 수 있다.
postgres=# create user new_user password 'new_password' superuser createdb createrole inherit;
CREATE ROLE
자세한 내용은 아래 url 참고
https://www.postgresql.org/docs/12/sql-createuser.html
User 생성 확인
postgres=# \du
롤 목록
롤 이름 | 속성 | 소속 그룹:
----------+------------------------------------------------+------------
new_user | 슈퍼유저 | {}
postgres | 슈퍼유저, 롤 만들기, DB 만들기, 복제, RLS 통과 | {}
postgres=# select * from pg_user;
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
postgres | 10 | t | t | t | t | ******** | |
new_user | 16387 | f | t | f | f | ******** | |
(2개 행)
2. TableSpace 생성
tablespace 생성 전 tablespace 를 저장할 postgres 권한의 디렉토리를 정해야한다.
(필자의 경우 /var/lib/pgsql/12/tablespace/new_user 디렉토리 생성)
-bash-4.2$ mkdir -p /var/lib/pgsql/12/tablespace/new_user
-bash-4.2$ ls -lart /var/lib/pgsql/12/tablespace/
합계 0
drwx------. 5 postgres postgres 69 8월 18 15:03 ..
drwxr-xr-x. 3 postgres postgres 22 8월 18 15:09 .
drwx------. 3 postgres postgres 29 8월 18 15:09 new_user
Tablespace 생성
postgres=# create tablespace new_tablespace owner new_user location '/var/lib/pgsql/12/tablespace/new_user';
CREATE TABLESPACE
자세한 내용은 아래 url 참고
https://www.postgresql.org/docs/12/sql-createtablespace.html
Tablespace 생성 확인
-bash-4.2$ cd /var/lib/pgsql/12/data/pg_tblspc
-bash-4.2$ ls -lart
합계 4
drwx------. 20 postgres postgres 4096 8월 18 14:00 ..
lrwxrwxrwx. 1 postgres postgres 37 8월 18 15:09 16390 -> /var/lib/pgsql/12/tablespace/new_user
drwx------. 2 postgres postgres 19 8월 18 15:09 .
postgres=# select * from pg_tablespace;
oid | spcname | spcowner | spcacl | spcoptions
-------+------------+----------+--------+------------
1663 | pg_default | 10 | |
1664 | pg_global | 10 | |
16390 | new_tablespace | 16387 | |
(3개 행)
postgres=# \db
테이블스페이스 목록
이름 | 소유주 | 위치
------------+----------+---------------------------------------
new_tablespace | new_user | /var/lib/pgsql/12/tablespace/new_user
pg_default | postgres |
pg_global | postgres |
(3개 행)
3. Database 생성
new_tablespace를 사용하는 new_user 가 owner 인 new_database 생성
postgres=# create database new_database owner new_user tablespace new_tablespace;
CREATE DATABASE
자세한 내용은 아래 url 참고
https://www.postgresql.org/docs/12/sql-createdatabase.html
Database 생성 확인
postgres=# select * from pg_database;
oid | datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace | datacl
-------+-----------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------------------------------
------
14187 | postgres | 10 | 6 | ko_KR.UTF-8 | ko_KR.UTF-8 | f | t | -1 | 14186 | 479 | 1 | 1663 |
1 | template1 | 10 | 6 | ko_KR.UTF-8 | ko_KR.UTF-8 | t | t | -1 | 14186 | 479 | 1 | 1663 | {=c/postgres,postgres=CTc/post
gres}
14186 | template0 | 10 | 6 | ko_KR.UTF-8 | ko_KR.UTF-8 | t | f | -1 | 14186 | 479 | 1 | 1663 | {=c/postgres,postgres=CTc/post
gres}
16392 | new_database | 16387 | 6 | ko_KR.UTF-8 | ko_KR.UTF-8 | f | t | -1 | 14186 | 479 | 1 | 16390 |
(4개 행)
postgres=# \l
데이터베이스 목록
이름 | 소유주 | 인코딩 | Collate | Ctype | 액세스 권한
-----------+----------+--------+-------------+-------------+-----------------------
new_database | new_user | UTF8 | ko_KR.UTF-8 | ko_KR.UTF-8 |
postgres | postgres | UTF8 | ko_KR.UTF-8 | ko_KR.UTF-8 |
template0 | postgres | UTF8 | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4개 행)
반응형