PostgreSQL이란?
PostgreSQL이란 무엇인가?에 대해서 자세한 내용이 필요하신 분들은 PostgreSQL 공식 사이트의 내용과 PostgreSQL 위키백과를 참고하시기 바란다. 본 포스팅에서는 WSL2 - Docker에 설치하는 데에 집중하여 기술하려 한다.
PostgreSQL을 Docker에 설치하기
- Docker Hub에서 PostgreSQL을 검색하면 아래와 같이 PostgreSQL의 공식 이미지가 검색된다.
- 해당 PostgreSQL을 Docker로 데려오자.
1
|
docker pull postgres
|
Docker에서 PostgreSQL image 데려오기
- 이미지가 잘 생성되었는 지 확인하자. postgres 이미지가 생성되어 있으면 성공이다.
1
|
docker images
|
Postgres 컨테이너를 생성하고 진입하기
- PostgreSQL을 위한 컨테이너를 생성하기 위해서는 아래와 같이 입력한다. 이 중 <YourStrong@Passw0rd> 부분은 자신이 사용할 DB 암호를 입력하면 된다.
1
|
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD="<YourStrong@Passw0rd>" --name PostgreSQL01 postgres
|
위의 각 항목은 다음과 같다.
(1) docker run : docker image에서 container를 생성한다.
(2) –name PostgreSQL01 : container의 이름은 PostgreSQL01로 한다.
(3) -p 5432:5432 : 해당 container의 port forwarding에 대해 inbound/outbound port 모두 5432으로 설정한다.
(4) -e : container 내 변수를 설정한다.
(5) POSTGRES_PASSWORD=”암호” : ROOT 암호를 설정 따옴표 내의 내용은 암호이다.
(6) -d postgres : postgres이라는 이미지에서 분리하여 container를 생성한다.
- 컨테이너의 상태를 확인한다. PostgreSQL01 컨테이너의 상태가 현재 Up 상태이면 생성 및 실행 성공이다.
1
|
docker ps -a
|
- 컨테이너가 실행 중인 상태일 때 컨테이너로 진입 시 아래 명령을 사용한다.
1
|
sudo docker exec --user="root" -it PostgreSQL01 "bash"
|
PostgreSQL을 실행하고 데이터 만들어보기
- PostgreSQL01 컨테이너로 진입하였으면, 아래와 같은 명령을 이용하여 DB를 실행할 수 있다.
1
|
psql -U postgres
|
- 서버 내 생성되어 있는 모든 데이터베이스 이름을 확인해보자.
1 2 |
SELECT datname FROM pg_database; -- 전체 데이터베이스 이름 출력 SELECT datname FROM pg_database WHERE datistemplate = false; -- 사용자가 생성한 데이터베이스 이름만 출력 |
- PostgreSQL 내에 사용자 Database를 하나 생성해 보자. 사용 방법은 **CREATE DATABASE 데이터베이스이름;**으로 하면 된다.
1
|
CREATE DATABASE postgresTestDB;
|
- 생성된 Database의 Schema를 보려면 아래와 같이 입력한다.
1
|
SELECT nspname FROM pg_catalog.pg_namespace;
|

- 생성한 데이터베이스들 중 하나를 사용하기 위해서는 \c 데이터베이스이름을 실행하면 된다.
1 2 |
\c postgresql \c postgrestestdb |
아래와 같이 사용하는 데이터베이스가 변경된다.
PostgreSQL DB 변경
- postgrestestdb를 선택한 후 특정 DB 내 모든 Table을 확인해 본다.
1 2 3 |
SELECT * FROM PG_TABLES; -- PostgreSQL 내 모든 테이블 이름 조회 SELECT * FROM PG_TABLES WHERE schemaname='public'; -- 사용자가 생성한 테이블 이름 조회 SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name; -- 사용자가 생성한 테이블의 이름 정보만 조회 |
PostgreSQL 내 특정 DB 속에 설정된 사용자가 생성한 테이블
- 아래와 같은 SQL 구문을 사용하여 간단히 데이터테이블을 하나 생성, 데이터 입력 후 조회해 본다. Line 1부터 한 줄 씩 입력하여 실행한다.
1 2 3 4 |
CREATE TABLE TestTable (ID INT, TestString VARCHAR(20)); INSERT INTO TestTable VALUES(1, 'number one'); INSERT INTO TestTable VALUES(2, 'number two'); SELECT * FROM TestTable; |
참고 : PostgreSQL에서 문자열 입력 시 single quote를 사용해야 한다.
- PostgreSQL에서 빠져나올 때는 아래와 같이 입력하면 된다.
1
|
\q
|
- 그 외 PostgreSQL에서 사용할 수 있는 여러 구문과 명령에 대한 자세한 내용은 PostgreSQL Tutorial 페이지를 참고한다.
GUI 도구 pgAdmin 설치하기
PostgreSQL은 pgAdmin이라는 GUI 도구를 지원한다.
-
먼저 pgAdmin 설치를 위해서 pgAdmin 공식 홈페이지로 이동한다.
-
필자는 Download > Windows를 선택하여 Windows용 클라이언트를 다운로드 하였다.
Windows용 클라이언트 다운로드
-
필자가 작성하는 시점에는 pgAdmin4 v5.2가 최신이었다. 최신 버전을 다운로드하여 설치한다.
2021년 4월 기준 최신 버전
-
다운로드한 파일을 클릭하면 설치가 시작된다. 설치하는 방법에 대해서는 따로 안내하지 않겠다.
pgAdmin 설치 시작
-
설치가 완료되면 윈도우 시작 화면에 pgAdmin이 나타난다.
Windows 시작 화면에 나타나는 pgAdmin
-
pgAdmin을 실행하면 짧은 로딩이 진행되는 동안 아래와 같은 로고 화면이 나타난다.
pgAdmin 시작 로고
-
pgAdmin 실행 시 암호를 입력하라고 나오면, 위쪽에 컨테이너를 생성할 때 입력했던 **<YourStrong@Passw0rd>**에 지정했던 암호를 입력하면 된다.
pgAdmin 실행 암호 입력
-
성공적으로 로그인 되었다면 Quick Link의 Add New Server를 클릭하여 생성한 PostgreSQL01 컨테이너에 연결해 보자.
Quick Link - Add New Server
-
새 창이 나타나면 General 탭과 Connection 탭에 아래와 같이 정보를 입력한다.
DB Connection 정보 입력
- 주소 : 127.0.0.1 - 내부 Docker의 컨테이너 주소
- ID : postgres
- PW : 위에서 설정한 <YourStrong@Passw0rd> 암호 입력