EC2に構築したPostgreSQLに外から接続する方法
はい、hebiです。
EC2に構築したPostgreSQLのDBに、外部のサービスで接続したいことがあると思います。
初期設定ではlocalhostのみ許可されているため、外部から接続することができません。
そこで、特定のIPアドレスのみを接続できるようにする方法を記事にしたいと思います。
前提
以下の記事で作成したPostgreSQL環境に対して外部から接続できるようにしたいと思います。
EC2のセキュリティグループの設定
EC2のインスタンスの初期設定は、port 80(HTTP)とport 22(SSH)のみ接続が許可されています。以下の手順でport 5432(PostgreSQL)の接続を許可しましょう。
セキュリティグループを開く
AWSマネージコンソールで対象のインスタンを選択し、「セキュリティ」タブからセキュリティグループを選択します。
インバウンドのルールを追加
「インバウンドのルールの編集」ボタンをクリックします。
「ルールを追加」ボタンをクリックし、タイプから「PostgreSQL」を選択します。
IPアドレス入力欄に許可するIPアドレスを入力し、「ルールを保存」ボタンをクリックします。
自PCの接続を許可したい場合は、以下のサイトからグローバルIPを確認できます。
- インバウンドルールとは?
-
外部から内部ネットワークへのアクセスを管理します。例えば、インターネットからEC2インスタンスへのHTTPアクセスを制御する場合の設定を行います。
- アウトバウンドルールとは?
-
内部ネットワークから外部ネットワークへのアクセスを管理します。例えば、EC2インスタンスから外部のデータベースサーバーへの接続を制御する場合の設定を行います。
登録確認
以下のように追加されたら完了です。
PostgreSQLの設定
EC2への接続は許可しましたが、PostgreSQLへの接続も許可する必要があります。以下の手順でPostgreSQLの設定ファイルを編集しましょう。
以下のコマンドでpostgresql.confを開きます。
sudo nano /var/lib/pgsql/data/postgresql.conf
「listen_addresses = ‘*’」に変更し保存します。
*を設定することで外部からの接続を可能にします。
以下のコマンドでpg_hba.confを開きます。
sudo nano /var/lib/pgsql/data/pg_hba.conf
「host all all 192.168.1.1/32 md5」を追加して保存します。192.168.1.1部分が許可したいIPアドレスです。
以下のコマンドでPostgreSQLを再起動して設定を適用させます。
sudo systemctl restart postgresql
以上で外部からの接続が許可されました。A5SQLツールで接続を確認してみましょう。
接続確認
DBへの接続を確認します。
PostgreSQLを選択します。
サーバー名にパブリックIP、データベース名、ユーザーID、パスワードを入力し、「テスト接続」をクリックします。
「接続に成功しました。」と表示されたら外部からの接続成功です。
最後に
外部からの接続方法いかがだったでしょうか。
EC2の接続許可設定、PostgreSQLの接続許可設定の両方を行わないと外部からの接続は許可されません。接続できない場合はどちらかの設定が不足している可能性がありますのでご確認ください。
最後までお読みいただきありがとうございました(^^♪