塩焼きブログ

塩焼きに関しての研究内容を公開しています

VMで立ち上げたUbuntuに開発用のPostgreSQLを構築しホスト側からリモート接続する

UbuntuにPostgreSQLをインストールし、ホストからVMのデータベースにリモート接続できるようにしたいと思います。

クライアントのインストール

ホストにはPostgreSQLのクライアントのみインストールします。

sudo apt install postgresql-client

PostgreSQLのインストール

開発用にVMにはPostgreSQLのサーバーをインストールします。VM上に立ち上げるのはDockerを立ち上げるホストとは別ネットワーク上に構築することで、DockerコンテナからDBへの接続が容易になるためです。

sudo apt install postgresql

PostgreSQLを起動します。

sudo systemctl start postgresql

再起動時に自動で立ち上がるように自動起動設定を追加します。

sudo systemctl enable postgresql

開発用のユーザーを作成する

devユーザーを作成します。今回はテストなのでsuperuser権限をもたせてで作成します。名前もパスワードもシンプルなものに設定すると楽。

sudo -u postgres -i
createuser --superuser --pwprompt dev
pgsql

作成されたユーザーを確認します。

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 dev       | Superuser, Create role, Create DB                          | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

ユーザー作成を誤った場合等は下記のようにしてユーザーを削除できます。

dropuser dev

リモート接続を許可する

今回はバージョン10なので、/etc/postgresql/10/main配下に各設定ファイルが配置されています。まずはリモートから接続できるようにsudo vi /etc/postgresql/10/main/pg_hba.confpg_hba.confを開き

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

この部分を書きのように(私の場合はVirtualboxでVMを立ち上げておりますのでvboxnet0のIP帯を)指定して許可してやります。ご自分の環境に合わせてこちらは書き換える必要があります。

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.33.0/24         md5

次にsudo vi /etc/postgresql/10/main/postgresql.confpostgresql.confを開き、下記のように指定します。

listen_addresses = '*'

最後にPostgreSQLを再起動します。

sudo systemctl restart postgresql

最後にホスト側から下記のようにして接続が確認できればOK

psql -h database -U dev -d postgres

参考