USER 확인

 

pg_catalog.pg_user

postgres=# SELECT * FROM pg_catalog.pg_user;
  usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig
-----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
 postgres  |       10 | t           | t        | t       | t            | ******** |          |
 cccc      |    16384 | f           | t        | f       | f            | ******** |          |
 ddd       |    17645 | f           | t        | f       | f            | ******** |          |
 aaa       |    29446 | f           | t        | f       | f            | ******** |          |
 bbb       |    17632 | f           | t        | f       | f            | ******** |          |
(5개 행)

 

select current_user;

postgres=# select current_user;
 current_user
--------------
 postgres
(1개 행)

 

conninfo; 

postgres-# \conninfo
접속정보: 데이터베이스="postgres", 사용자="postgres", 소켓="/var/run/postgresql", 포트="5432"

 

 

 

\du

postgres-# \du
                                 롤 목록
  롤 이름  |                      속성                      | 소속 그룹:
-----------+------------------------------------------------+------------
 postgres  | 슈퍼유저, 롤 만들기, DB 만들기, 복제, RLS 통과 | {}
 aaa       | 슈퍼유저                                       | {}
 bbb       | 슈퍼유저                                       | {}
 ccc      | 슈퍼유저                                       | {}
 ddd      | 슈퍼유저                                       | {}
 eee      | 슈퍼유저                                       | {}

 

 



USER 생성

postgres=# create user sua with password 'sua';
CREATE ROLE
postgres=# create database suaDB;
CREATE DATABASE
postgres=# grant all privileges on database suaDB to sua;
GRANT

user switch

conn sua/sua 
conn -u sua -u sua 
안됨! 


터미널 나갔다가 user 로 접속해야함

 

 

 

schema생성

suadb=> create schema sua_schema;
CREATE SCHEMA


suadb=> grant all privileges on schema sua_schema to sua;
GRANT


suadb=> \dn
          스키마 목록
    이름    |      소유주
------------+-------------------
 public     | pg_database_owner
 sua_schema | sua
(2개 행)

 

 

 

user의 default schema 를 sua_schema로 변경하기 

-- public 스키마 권한을 안줘서 table 생성 안됨
suadb=> create table t1 ( c1 int, c2 varchar(10));
오류:  public 스키마(schema) 접근 권한 없음
줄 1: create table t1 ( c1 int, c2 varchar(10));


-- sua_schema를 기본 경로로 변경

바꾸기전 
suadb=> show search_path;
   search_path
-----------------
 "$user", public
(1개 행)


바꾸는 명령어
suadb=> alter role sua set search_path to sua_schema, public;
ALTER ROLE


재접속 후 변경됨을 확인
suadb=> show search_path;
    search_path
--------------------
 sua_schema, public
(1개 행)


테이블 생성 완료
suadb=> create table t1 ( c1 int, c2 varchar(10));
CREATE TABLE

 

 

번외로 tablespace 사용량 및 tablespace 별 database 보려고 한다 

postgres=# sELECT datname, pg_tablespace_location(dattablespace) AS tablespace_location
postgres-# FROM pg_database;
  datname  | tablespace_location
-----------+---------------------
 postgres  |
 pgsql_119 |
 template1 |
 template0 |
 pms5123   |
 edk2613   |
 suadb     |
(7개 행)

postgres=# ^C
postgres=# select * from pg_tablespace;
 oid  |  spcname   | spcowner | spcacl | spcoptions
------+------------+----------+--------+------------
 1663 | pg_default |       10 |        |
 1664 | pg_global  |       10 |        |
(2개 행)

postgres=# select pg_tablespace_size('pg_default');
 pg_tablespace_size
--------------------
        17358942323
(1개 행)