-
[Airflow] - 5.Postgresql 설치 및 DB setting개발/Airflow 2022. 7. 13. 17:07
Airflow와 연동하여 사용할 DB = postgresql(psql)에 알아보도록 하겠습니다.
docker-compose 내에 있는 파일을 통해서 Build를 하는 것이 아닌 Postgres Image를 통해 빌드하는 내용입니다.
Postgresql을 이제부터 psql 이라 칭하여 부르겠습니다.
들어가기 앞써, 설치 및 실제 Docker위에서 실행하는 방법부터 단계적으로 알아보려고 합니다.
1. Psql Install & Docker run
아래와 같은 명령어를 치게 된면 최근의 Psql 이미지를 가져와 실행시켜 줍니다.
$ docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password -d postgres Unable to find image 'postgres:latest' locally latest: Pulling from library/postgres 461246efe0a7: Pull complete 8d6943e62c54: Pull complete 558c55f04e35: Pull complete 186be55594a7: Pull complete f38240981157: Pull complete e0699dc58a92: Pull complete 066f440c89a6: Pull complete ce20e6e2a202: Pull complete c0f13eb40c44: Pull complete 3d7e9b569f81: Pull complete 2ab91678d745: Pull complete ffc80af02e8a: Pull complete f3a57056b036: Pull complete Digest: sha256:11f12b4e9160357a31a056f524e51eb39f5480b1d7ba8a8e733da5bd0d84ce56 Status: Downloaded newer image for postgres:latest ed29e1265637722c76c241142b911780dfc20e51e2adf53298bcfb410bfe7131
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ed29e1265637 postgres "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:5432->5432/tcp postgres
2. Create User & Create Database in Container
2-1) Container 접속
$ docker exec -it postgres /bin/bash
2-2) postgres(Admin) 계정 Login
관리자 계정으로 들어가 저희가 사용할 계정을 하나 만들 예정입니다.
root@ed29e1265637:/# psql -U postgres psql (14.4 (Debian 14.4-1.pgdg110+1)) Type "help" for help.
2-3) User 생성 및 권한 부여
User 생성 및 권한을 주는 부분입니다.
본인이 사용할 계정으로 만드시면 됩니다.
postgres=# CREATE USER kimuksung2 PASSWORD 'password' SUPERUSER; CREATE ROLE
2-4) DB 생성
test라는 DB를 만들어보겠습니다.
postgres=# CREATE DATABASE test OWNER kimuksung2; CREATE DATABASE
아래와 같이 test라는 DB에 사용자를 연결하여 줍니다.
postgres=# \c test kimuksung2 You are now connected to database "test" as user "kimuksung2".
테이블을 예시로 만들어보겠습니다.
test=# CREATE TABLE star ( id integer NOT NULL, name character varying(255), class character varying(32), age integer, radius integer, lum integer, magnt integer, CONSTRAINT star_pk PRIMARY KEY (id) ); CREATE TABLE
아래는 확인용으로 쿼리 날려보았습니다. ( 상세한 부분은 뒤에 별도로 command 정리하여 보겠습니다. )
test=# \du List of roles Role name | Attributes | Member of ------------+------------------------------------------------------------+----------- kimuksung2 | Superuser | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} test=# \dt List of relations Schema | Name | Type | Owner --------+------+-------+---------- public | star | table | kimuksung2 (1 row) test=# SELECT * FROM star; id | name | class | age | radius | lum | magnt ----+------+-------+-----+--------+-----+------- (0 rows)
'개발 > Airflow' 카테고리의 다른 글
[Airflow] - 7. Operator & Xcoms (0) 2022.07.20 [Airflow] - 6. Connect Postgresql (0) 2022.07.19 [Airflow&Python] - 4. Template variable(ts/ds/.. ) & datetime & KST 변경 (0) 2022.07.08 [Airflow] - 3. Dags(Python operator) (0) 2022.07.08 [Airflow] Why Apache Airflow? (0) 2022.07.06