本文介绍如何解决云原生数据仓库 AnalyticDB PostgreSQL 版无法连接的问题。
问题现象
在使用客户端连接云原生数据仓库 AnalyticDB PostgreSQL 版实例时,弹窗报错,错误信息如下:
错误信息为 ERROR: could not connect to server,详细信息提示 could not connect to server: Connection timed out. Is the server running on host <主机地址> and accepting TCP/IP connections on port 5432?
问题原因
报错的IP云原生数据仓库 AnalyticDB PostgreSQL 版实例无法互相访问。可能原因如下:
-
报错的IP是用户局域网的IP。
-
未设置云原生数据仓库 AnalyticDB PostgreSQL 版实例的IP白名单。
解决方式
-
如何查看本地客户端IP并设置云原生数据仓库 AnalyticDB PostgreSQL 版实例白名单?
-
由于网络环境复杂多样,用户可能无法正确地找到本地客户端的IP地址来设置实例白名单。本文介绍如何查看本地客户端的IP。
操作步骤
-
将
0.0.0.0/0添加到云原生数据仓库 AnalyticDB PostgreSQL 版实例的白名单,具体操作如下:在控制台左上角,选择实例所在地域。
找到目标实例,单击实例ID。
-
在左侧导航栏中,单击数据安全性。
-
在白名单设置页签中,单击default白名单分组后的修改,进入修改白名单分组面板。
-
删除组内白名单中的默认白名单127.0.0.1,写入白名单地址
0.0.0.0/0。说明0.0.0.0/0允许任何IP访问数据库,将会引入较高的安全风险,请尽快删除。 -
单击确定,完成白名单设置。
-
使用客户端连接到云原生数据仓库 AnalyticDB PostgreSQL 版实例,请参见客户端连接下载安装psql客户端,使用如下连接语句连接数据库:
psql -h yourgpdbaddress.gpdb.rds.aliyuncs.com -p 3432 -d postgres -U gpdbaccount其中,各个参数的定义如下:
-
-h:指定主机地址。
-
-p:指定端口号。
-
-d:指定数据库(默认的数据库是 postgres),
-
-U:指定连接的用户。
-
可以通过
psql --help查看更多选项。在 psql 中,可以执行\?查看更多 psql 中支持的命令。
-
-
进入数据库后,在数据库的SQL命令行窗口中运行如下命令,查询客户端的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 PostgreSQL 版控制台中,将白名单
0.0.0.0/0删除,输入上个步骤查询到的IP地址,即可正常访问数据库。
-
-