Docker上のCentOSからPostgreSQLに接続する検証
Docker上のCentOSからPostgreSQLに接続する検証
Dockerホスト側の設定
Dockerホストの設定
yum install -y docker service docker start docker pull centos:centos7 docker run -i -t centos /bin/bash
Dockerコンテナ上の設定
yum localinstall -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-ami201503-96-9.6-2.noarch.rpm yum install -y postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib #DBサーバをIP or ホスト名を指定 DB_HOST= PG_USER_NAME=devuser PG_PASSWORD=password PG_PORT=5432 PG_DB=sample #SSLモードでの接続 /usr/pgsql-9.6/bin/psql "postgres://${PG_USER_NAME}:${PG_PASSWORD}@${DB_HOST}:${PG_PORT}/${PG_DB}?sslmode=require" #接続しているユーザーを確認 select session_user;
PostgreSQL側の設定
PostgreSQLのインストール
yum localinstall -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-ami201503-96-9.6-2.noarch.rpm yum install -y postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib
PostgreSQLの初期化
/etc/init.d/postgresql-9.6 initdb /etc/init.d/postgresql-9.6 start
SSLに対応するため証明書などを作成
cd /var/lib/pgsql/9.6/data openssl genrsa -out server.key 1024 openssl req -new -key server.key -x509 -days 365 -out server.crt chmod 600 server.* chown postgres:postgres server.key server.crt
postgresユーザーにパスワードを設定
su - postgres
psql
alter role postgres with password 'password';
\q
設定ファイルの編集
postgresql.conf
/var/lib/pgsql/9.6/data/postgresql.conf
listen_addresses = '*' port = 5432
ssl = on ssl_cert_file = 'server.crt' ssl_key_file = 'server.key'
pg_hba.conf
/var/lib/pgsql/9.6/data/pg_hba.conf
#TYPE DATABASE USER CIDR-ADDRESS METHOD host all all 0.0.0.0/0 md5
再起動
/etc/init.d/postgresql96 restart
接続確認
su - postgres createuser -P devuser psql \du \q
データベース作成
psql \dp create database sample; \l
テーブルの作成
\connect sample CREATE TABLE table1(id int, nick_name character varying(5)); \dt GRANT SELECT, INSERT, UPDATE, DELETE ON table1 TO devuser; psql postgres devuser