DOCKER postgreSql을 설치하고

 

DB와 연결하는 과정을 적어보았습니다.

$ docker run -d -p 5432:5432 --name pgsql  -it -v  pgdate:/var/lib/postgresql/data -e POSTGRES_PASSWORD=1234 postgres 
// 이미지 생성 및 볼륨 연결 + 비밀번호 설정 


2c0f71a71b7f1ffe8b73ecc9c241bab6c345bbc126f0007654ec8ab125a3627d

$ docker exec -it pgsql bash // bash 접속
/# psql -U postgres // postgres db 접속


postgres-# /userID //비밀번호 재설정을 원하면 아이디를 한번더 친다

Enter new password:   //비밀번호 칠때는 공백으로나와도 쳐지고있음
Enter it again:

postgres=# CREATE USER userId WITH SUPERUSER CREATEDB LOGIN ENCRYPTED PASSWORD '1234'; // 슈퍼 유저계정 생성
CREATE ROLE
postgres=# set timezone='ROK'; //타임존설정 ==>한국으로


postgres=# SELECT * FROM PG_USER; // db내에있는  계정들을 출력해준다

  usename   | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig
------------+----------+-------------+----------+---------+--------------+----------+----------+-----------
 postgres   |       10 | t           | t        | t       | t            | ******** |          |
 userId	    |    16384 | t           | t        | f       | f            | ******** |          |
(2 rows)



postgres-#  \du // postgres DB내에있는 계정들의 권한 을 알려주는 명령어
                                    List of roles
 Role name  |                         Attributes                         | Member of
------------+------------------------------------------------------------+-----------
 userId | Superuser, Create DB                                       | {}
 postgres   | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 
 
 postgres=# \l // postgres DB내의 모든 db목록을 보여줌
 
 postgres=# CREATE DATABASE jshdb OWER jsh; // db생성 코드 앞에는 db명 뒤는 db생성자 이름이다.
 
 postgres=# \c db명 userId // 생성해준 DB에 접속하는 명령어 \c이다
 
 # CREATE TABLE text(
id integer NOT NULL,
name character varying(255),
class character varying(32),
age integer,
gender character varying(10)
);
CREATE TABLE // 테이블 생성해줌

# CREATE INDEX index_text ON text using btree(name); // 인덱스 생성 해주는 코드
# select *from pg_indexes WHERE tablename ='text'; // 인덱스 정보를 확인이 가능하다

# \d text // text table의 컬럼들과 그 조건들을 확인이 가능하다




                       Table "public.text"
 Column |          Type          | Collation | Nullable | Default
--------+------------------------+-----------+----------+---------
 id     | integer                |           | not null |
 name   | character varying(255) |           |          |
 class  | character varying(32)  |           |          |
 age    | integer                |           |          |
 gender | character varying(10)  |           |          |
Indexes:
    "index_text" btree (name)

 

 

추가 팁

 

#begin; //SQL 명령어를 사용하기전에 사용하면
BEGIN


#commit; //커밋해주기전까지 해당 명령들이 저장되지않는다
COMMIT

 

begin 안하고 그냥 작성하면 default가 자동 명령어 줄때마다 자동 commit되어있는거같습니다. (test가 필요함)

 

postgreSQl 을 사용하기전에는 volume을 컨테이너와 연결해놓고 사용하는걸 권한다. (데이터 유실방지)

 

 

exemtest=# CREATE SCHEMA schema2 AUTHORIZATION userId; //스키마 생성
CREATE SCHEMA

exemtest=# \dn     //스키마 목록 확인
     List of schemas
    Name    |   Owner
------------+------------
 schema2    | userId
 schematest | postgres
(2 rows)




-- 스키마 생성
CREATE SCHEMA schema_name AUTHORIZATION username;

-- 스키마 이름 변경
ALTER SCHEMA schema_name RENAME TO new_schema_name;

-- 스키마 소유자 변경
ALTER SCHEMA username OWNER TO new_username;

-- 스키마 삭제
DROP SCHEMA schema_name CASCADE;


# 스키마 / 데이터 모두 복제
pg_dump -U username -n source_schema dbname | sed 's/source_schema/dest_schema/g' | psql -U username -d dbname

# 스키마 만 복제
pg_dump -s -U username -n source_schema dbname | sed 's/source_schema/dest_schema/g' | psql -U username -d dbname

# 데이터 만 복제
pg_dump -a -U username -n source_schema dbname | psql -U username -d dbname -n 

 

 

'Coding > Server' 카테고리의 다른 글

Docker로 로컬에 kafka설치하기 (Windows 10) 윈도우 툴박스 이용  (0) 2019.11.14
REST API 를 쓰는이유  (0) 2019.11.08
Docker 메모  (0) 2019.11.07

+ Recent posts