PostgreSQL データベースエンジンを実行する DB インスタンスへの接続 - Amazon Relational Database Service

PostgreSQL データベースエンジンを実行する DB インスタンスへの接続

Amazon RDS によって DB インスタンスがプロビジョニングされると、標準の SQL クライアントアプリケーションを使用してインスタンスに接続できます。Amazon RDS DB インスタンスの詳細を一覧表示するには、AWS Management Console、AWS CLI describe-db-instances コマンド、または Amazon RDS API DescribeDBInstances オペレーションを使用できます。接続するには以下の情報が必要です。

  • 次の例のような DB インスタンスのホストまたはホスト名。

    myinstance.123456789012.us-east-1.rds.amazonaws.com
  • DB インスタンスがリッスンするポート。例えば、デフォルトの PostgreSQL ポートは 5432 です。

  • DB インスタンスのユーザー名とパスワード。

以下に、PostgreSQL DB インスタンスに接続する 2 つの方法を示します。最初の例では、オープンソースの PostgreSQL 向け管理開発ツールとして人気のある pgAdmin を使用します。2 番目の例では、PostgreSQL に付属するコマンドラインユーティリティである psql を使用します。

pgAdmin を使用した PostgreSQL DB インスタンスへの接続

オープンソースのツール pgAdmin を使用して、PostgreSQL DB インスタンスに接続できます。

pgAdmin を使用して PostgreSQL DB インスタンスに接続するには

  1. DB インスタンスのエンドポイント (DNS 名) とポート番号を見つけます。

    1. RDS コンソールを開き、[データベース] を選択して、DB インスタンスを一覧表示します。

    2. PstgreSQL DB インスタンス名を選択して、詳細を表示します。

    3. [接続とセキュリティ] タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。

      
                                PostgreSQL DB インスタンスへの接続
  2. http://www.pgadmin.org/ から pgAdmin をインストールします。pgAdmin は、クライアントコンピュータに PostgreSQL のローカルインスタンスがなくても、ダウンロードして使用できます。

  3. クライアントコンピュータの pgAdmin アプリケーションを起動します。

  4. [Dashboard] (ダッシュボード) タブで、[Add New Server] (新しいサーバーの追加) を選択します。

  5. [Create - Server] (作成 - サーバー) ダイアログボックスの [General] (全般) タブで名前を入力して、pgAdmin のサーバーを特定します。

  6. [Connection] (接続) タブで、DB インスタンスから以下の情報を入力します。

    • [ホスト] に、エンドポイントを入力します (例: mypostgresql.c6c8dntfzzhgv0.us-east-2.rds.amazonaws.com)。

    • [Port] (ポート) には、割り当てられているポートを入力します。

    • [Username] (ユーザー名) には、DB インスタンスの作成時に入力したユーザー名を入力します。

    • [パスワード] に、DB インスタンスの作成時に入力したパスワードを入力します。

  7. [Save] を選択します。

    接続に問題がある場合は、「PostgreSQL インスタンスへの接続に関するトラブルシューティング」を参照してください。

  8. pgAdmin ブラウザでデータベースにアクセスするには、[Servers] (サーバー)、DB インスタンス、および [Databases] (データベース) を展開します。DB インスタンスのデータベース名を選択します。

  9. SQL コマンドを入力できるパネルを開くには、[Tools] (ツール)、[Query Tool] (クエリツール) の順に選択します。

psql を使用した PostgreSQL DB インスタンスへの接続

psql コマンドラインユーティリティのローカルインスタンスを使用して、PostgreSQL DB インスタンスに接続できます。PostgreSQL またはクライアントコンピュータにインストールされた psql クライアントのいずれかが必要です。psql を使用して PostgreSQL DB インスタンスに接続するには、ホスト情報とアクセス認証情報を指定する必要があります。

以下の形式のいずれかを使用して、Amazon RDS 上の PostgreSQL DB インスタンスに接続します。接続時にパスワードを求められます。バッチジョブまたはスクリプトには、--no-password オプションを使用します。このオプションは、セッション全体に対して設定されます。

注記

サーバーがパスワード認証を要求し、他のソースからパスワードを取得できない場合、--no-password との接続試行に失敗します。詳細については、「psql ドキュメント」を参照してください。

この DB インスタンスに初めて接続する場合、デフォルトのデータベース名 postgres--dbname オプションに使用してみてください。

Unix の場合、次の形式を使用します。

psql \ --host=<DB instance endpoint> \ --port=<port> \ --username=<master username> \ --password \ --dbname=<database name>

Windows の場合、次の形式を使用します。

psql ^ --host=<DB instance endpoint> ^ --port=<port> ^ --username=<master username> ^ --password ^ --dbname=<database name>

例えば、次のコマンドは、架空の認証情報を使用して、mypgdb という PostgreSQL DB インスタンス上の mypostgresql というデータベースに接続します。

psql --host=mypostgresql.c6c8mwvfdgv0.us-west-2.rds.amazonaws.com --port=5432 --username=awsuser --password --dbname=mypgdb

PostgreSQL インスタンスへの接続に関するトラブルシューティング

エラー – 致命的: データベース name が存在しません

接続時にFATAL: database name does not existのようなエラーが発生する場合、デフォルトのデータベース名 postgres--dbname オプションに使用してみてください。

– サーバー接続失敗エラー: 接続がタイムアウトしました。

DB インスタンスに接続できない場合、最も一般的なエラーは Could not connect to server: Connection timed out. です。このエラーを受け取った場合、以下を確認します。

  • 使用しているホスト名が DB インスタンスのエンドポイントであること、および使用しているポート番号が正しいことを確認します。

  • DB インスタンスのパブリックアクセシビリティが [はい] に設定され、外部接続が許可されていることを確認します。パブリックアクセス設定を変更するには 、「Amazon RDS DB インスタンスを変更する」を参照してください。

  • 接続で経由する可能性のあるファイアウォールを通過するアクセス許可のルールが、DB インスタンスに割り当てられたセキュリティグループに設定されていることを確認します。例えば、DB インスタンスをデフォルトポート 5432 で作成した場合、会社のファイアウォールルールにより、外部企業デバイスから当該ポートへの接続がブロックされる可能性があります。

    この問題を解決するには、別のポートを使用するよう DB インスタンスを変更します。また、DB インスタンスに適用されているセキュリティグループが、その新しいポートへの接続を許可していることも確認します。データベースポートの設定を変更するには 、「Amazon RDS DB インスタンスを変更する」を参照してください 。

  • セキュリティグループのアクセスルールのエラー」も参照してください。

セキュリティグループのアクセスルールのエラー

最も一般的な接続の問題は、DB インスタンスに割り当てられているセキュリティグループのアクセスルールに関係するものです。DB インスタンスの作成時にデフォルトの DB セキュリティグループを使用した場合、恐らくそのセキュリティグループにはインスタンスへのアクセスを許可するルールはありません。

接続が機能するには、作成時に DB インスタンスに割り当てたセキュリティグループが DB インスタンスへのアクセスを許可する必要があります。例えば、DB インスタンスが VPC で作成された場合、接続を承認する VPC セキュリティグループが必要です。アプリケーションが実行中のデバイスまたはAmazon EC2インスタンスからの接続を承認しないセキュリティグループを使用して、 DB インスタンスを作成したかどうかを確認します。

セキュリティグループでインバウンドのルールを追加または編集できます。[ソース] に対して [マイ IP] を選択すると、ブラウザで検出された IP アドレスから DB インスタンスにアクセスできます。詳細については、「セキュリティグループを作成して VPC 内の DB インスタンスへのアクセスを提供する」を参照してください。

または、DB インスタンスが VPC の外部で作成された場合は、それらの接続を承認するデータベースセキュリティグループが必要です。

Amazon RDS セキュリティグループの詳細については、「セキュリティグループによるアクセスコントロール」を参照してください。