ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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)

    댓글

Designed by Tistory.