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 |