このトピックでは、AnalyticDB for PostgreSQL インスタンスへの接続に関する問題を解決する方法について説明します。
症状
AnalyticDB for PostgreSQL インスタンスに接続すると、次のエラーメッセージが表示されることがあります。
エラーメッセージは ERROR: could not connect to server で、詳細として could not connect to server: Connection timed out. Is the server running on host <host_address> and accepting TCP/IP connections on port 3432? などが表示されます。
原因
この問題は、クライアントが AnalyticDB for PostgreSQL インスタンスと通信できない場合に発生します。考えられる原因は次のとおりです:
-
クライアントが LAN (ローカルエリアネットワーク) 上のプライベート IP アドレスから接続していること。
-
AnalyticDB for PostgreSQL インスタンスのホワイトリストに、クライアントのパブリック IP アドレスが含まれていないこと。
解決策
-
オンプレミスクライアントの IP アドレスを特定し、AnalyticDB for PostgreSQL インスタンスのホワイトリストに追加する方法
-
オンプレミスクライアントのパブリック IP アドレスが不明な場合は、次の手順に従って特定します。
[操作の手順]
-
AnalyticDB for PostgreSQL インスタンスの IP アドレスホワイトリストに、一時的に
0.0.0.0/0を追加します。AnalyticDB for PostgreSQLコンソールにログインします。
ホームページの左上でリージョンを選択します。
管理するインスタンスを検索し、インスタンスIDをクリックします。
-
左側のナビゲーションペインで、セキュリティコントロール をクリックします。
-
ホワイトリストの設定 タブで、デフォルトのホワイトリストグループの右側にある 変更 をクリックします。ホワイトリストを編集 パネルが開きます。
-
IP アドレス フィールドで、デフォルトのエントリ
127.0.0.1を削除し、0.0.0.0/0を入力します。説明エントリ
0.0.0.0/0は、あらゆる IP アドレスからのアクセスを許可するため、重大なセキュリティリスクをもたらします。設定が完了したら、すぐに削除してください。 -
OK をクリックします。
-
psql クライアントを使用して AnalyticDB for PostgreSQL インスタンスに接続します。psql クライアントをインストールする必要がある場合は、「クライアント接続」を参照してください。次のコマンドを使用します:
psql -h yourgpdbaddress.gpdb.rds.aliyuncs.com -p 3432 -d postgres -U gpdbaccountパラメーターの説明:
-
-h:ホストアドレスを指定します。
-
-p:ポート番号を指定します。
-
-d:接続先のデータベースを指定します。デフォルトは
postgresです。 -
-U:接続に使用するユーザー名を指定します。
-
その他のオプションについては、
psql --helpコマンドを実行してください。psql 内では、\?コマンドを実行すると、psql 固有のコマンドのリストが表示されます。
-
-
データベースに接続した後、次のコマンドを実行してオンプレミスクライアントの IP アドレスを特定します:
select * from pg_stat_activity;実行結果の client_addr 列の値が、オンプレミスクライアントの IP アドレスです。
postgres=> select * from pg_stat_activity; datid | datname | procpid | sess_id | usesysid | usename | current_query | waiting | query_start | backend_start | client_addr | client_port | application_name | xact_start | waiting_reason -------+----------+---------+---------+----------+---------+-----------------------------+---------+-------------------------------+--------------------------------+-------------+-------------+------------------+-------------------------------+---------------- 10902 | postgres | 45909 | 254025 | 17239 | test123 | select * from pg_stat_activity; | f | 2019-02-19 14:07:00.37242+08 | 2019-02-19 14:06:26.170467+08 | xxx.xx.xx.x | 31964 | psql | 2019-02-19 14:07:00.37242+08 | (1 row) postgres=> -
AnalyticDB for PostgreSQL コンソールに戻ります。IP アドレスホワイトリストで、エントリ
0.0.0.0/0を削除し、クライアントの IP アドレスに置き換えます。
-
-