Database

PostgreSQL User & Tablespace & Database 생성

아무일도없었다 2022. 8. 18. 16:15

※ 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

 

CREATE USER

CREATE USER CREATE USER — define a new database role Synopsis CREATE USER name [ [ WITH ] option [ …

www.postgresql.org

 

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

 

CREATE TABLESPACE

CREATE TABLESPACE CREATE TABLESPACE — define a new tablespace Synopsis CREATE TABLESPACE tablespace_name [ OWNER { new_owner | CURRENT_USER | …

www.postgresql.org

 

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

 

CREATE DATABASE

CREATE DATABASE CREATE DATABASE — create a new database Synopsis CREATE DATABASE name [ [ WITH ] [ OWNER [=] …

www.postgresql.org

 

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개 행)

 

반응형