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

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

Amazon RDS によって DB インスタンスがプロビジョニングされると、スタンダードの SQL クライアントアプリケーションを使用してインスタンスに接続できます。接続する前に、DB インスタンスが使用可能でアクセス可能である必要があります。VPC の外部からインスタンスに接続できるかどうかは、Amazon RDS DB インスタンスの作成方法によって異なります。

  • DB インスタンスを公開で作成した場合、VPC 外部のデバイスと Amazon EC2 インスタンスからデータベースに接続できます。

  • DB インスタンスをプライベートで作成した場合、Amazon VPC 内の Amazon EC2 インスタンスとデバイスのみがデータベースに接続できます。

EC2 インスタンスから DB インスタンスに接続するには、EC2 インスタンスに PostgreSQL クライアントをインストールします。psql クライアントを Amazon Linux 2023 にインストールするには、次のコマンドを実行します。

sudo dnf install postgresql15

psql クライアントを Amazon Linux 2 にインストールするには、次のコマンドを実行します。

sudo amazon-linux-extras install postgresql14

psql クライアントを Ubuntu にインストールするには、次のコマンドを実行します。

sudo apt-get install -y postgresql14

DB インスタンスがパブリックかプライベートかを確認するには、AWS Management Console を使用してインスタンスの [Connectivity & security] (接続とセキュリティ) タブを確認します。[Security] (セキュリティ) では、「パブリックアクセス可能」の値を見つけることができます。プライベートの場合は [No] (いいえ)、パブリックの場合は [Yes] (はい) です。

Amazon RDS および Amazon VPC のさまざまな設定、およびそれらがアクセシビリティに与える影響の詳細については、「VPC の DB インスタンスにアクセスするシナリオ」を参照してください。

DB インスタンスが利用可能でアクセス可能な場合は、SQL クライアントアプリケーションに次の情報を提供することによって接続できます。

  • DB インスタンスのエンドポイントで、インスタンスのホスト名 (DNS 名)として機能します。

  • DB インスタンスがリッスンするポート。PostgreSQL のデフォルトポートは 5432 です。

  • DB インスタンスのユーザーネームとパスワード。PostgreSQL のデフォルトの「マスターユーザーネーム」はpostgresです。

  • データベースの名前とパスワード (DB 名)です。

これらの詳細は、AWS Management Console、AWS CLIdescribe-db-instancesコマンド、またはAmazon RDS API DescribeDBInstancesオペレーションを使用して取得できます。

エンドポイント、ポート番号、および DB 名を検索するにはAWS Management Consoleを使用します。
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

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

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

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

    
                            RDS コンソールからエンドポイントを取得する
  5. 設定タブで、DB 名をメモします。RDS for PostgreSQL インスタンスの作成時にデータベースを作成した場合は、DB 名に名前が表示されます。データベースを作成しなかった場合、DB 名にダッシュ (‐) が表示されます。

    
                            RDS コンソールから DB 名を取得する

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

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

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

pgAdmin を使用して、 RDS for PostgreSQL DB インスタンスに接続するには
  1. クライアントコンピュータの pgAdmin アプリケーションを起動します。

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

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

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

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

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

    • ユーザーネームでは、DB インスタンスの作成時に入力したユーザーネームを入力します (「マスターユーザーネーム」をデフォルトから変更した場合、postgres)。

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

  5. Save を選択します。

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

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

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

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

psql コマンドラインユーティリティのローカルインスタンスを使用して、RDS for PostgreSQL DB インスタンスに接続できます。PostgreSQL またはクライアントコンピュータにインストールされた psql クライアントのいずれかが必要です。

PostgreSQL クライアントは、PostgreSQL のウェブサイトからダウンロードできます。オペレーティングシステムのバージョンに対応した手順に従い、psql をインストールします。

psql を使用して RDS for PostgreSQL DB インスタンスに接続するには、ホスト (DNS) 情報とアクセス認証情報、データベース名を指定する必要があります。

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

注記

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

この DB インスタンスに初めて接続する場合、またはこの RDS for PostgreSQL インスタンスのデータベースをまだ作成していない場合、「マスターユーザーネーム」とパスワードを使用してPostgresのデータベースに接続できます。

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 用 AWS JDBC ドライバー との接続

PostgreSQL 用 AWS JDBC ドライバーは、RDS for PostgreSQL で使用するために設計されたクライアントラッパーです。PostgreSQL 用AWS JDBC ドライバーは、認証などの機能を有効にすることで、コミュニティ pgJDBC AWS ドライバーの機能を拡張します。PostgreSQL 用 AWS JDBC ドライバーおよびその使用方法の詳細については、PostgreSQL 用 AWS JDBC ドライバー GitHub リポジトリを参照してください。

MySQL 用の AWS JDBC ドライバーは AWS Identity and Access Management (IAM) データベース認証と AWS Secrets Manager をサポートしています。ドライバーでこれらの認証メカニズムを使用する方法の詳細については、AWS JDBC Driver for PostgreSQL GitHub リポジトリの「AWSIAM AWS Secrets Manager認証プラグインとプラグイン」を参照してください。

IAM データベース認証の詳細については、「MariaDB、MySQL、および PostgreSQL の IAM データベース認証」を参照してください。Secrets Manager の詳細については、AWS Secrets Manager ユーザーガイドを参照してください。

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

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

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

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

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

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

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

  • データベースに接続するユーザーに CONNECT アクセス権があることを確認してください。次のクエリを使用して、データベースへの接続アクセスを提供できます。

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

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

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

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

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

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

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

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

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