通过gsql客户端无法连接数据库
问题现象
用户通过客户端工具gsql无法连接到数据库。
原因分析
- 系统连接数量超过了最大连接数量,会显示如下错误信息。
1 2
gsql -d human_resource -h 10.168.0.74 -U user1 -p 8000 -W password -r gsql: FATAL: sorry, too many clients already
- 用户不具备访问该数据库的权限,会显示如下错误信息。
1 2 3
gsql -d human_resource -h 10.168.0.74 -U user1 -p 8000 -W password -r gsql: FATAL: permission denied for database "human_resource" DETAIL: User does not have CONNECT privilege.
- 网络连接故障。
解决办法
- 系统连接超过最大连接数量。
用户可在GaussDB(DWS) 控制台设置最大连接数max_connections。
max_connections设置方法如下:
- 登录GaussDB(DWS) 管理控制台。
- 在左侧导航栏中,单击“集群管理”。
- 在集群列表中找到所需要的集群,单击集群名称,进入集群“基本信息”页面。
- 单击“参数修改”页签,修改参数“max_connections”的值,然后单击“保存”。
- 在“修改预览”窗口,确认修改无误后,单击“保存”。
关于查看用户会话连接数的方法如表1。
表1 查看会话连接数 描述
命令
查看指定用户的会话连接数上限。
执行如下命令查看连接到指定用户user1的会话连接数上限。其中,-1表示没有对用户user1设置连接数的限制。
1 2 3 4 5
SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='user1'; rolname | rolconnlimit ---------+-------------- user1 | -1 (1 row)
查看指定用户已使用的会话连接数。
执行如下命令查看指定用户user1已使用的会话连接数。其中,1表示user1已使用的会话连接数。
1 2 3 4 5 6
SELECT COUNT(*) FROM V$SESSION WHERE USERNAME='user1'; count ------- 1 (1 row)
查看指定数据库的会话连接数上限。
执行如下命令查看连接到指定数据库db_demo的会话连接数上限。其中,-1表示没有对数据库db_demo设置连接数的限制。
1 2 3 4 5 6
SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='db_demo'; datname | datconnlimit ----------+-------------- db_demo | -1 (1 row)
查看指定数据库已使用的会话连接数。
执行如下命令查看指定数据库db_demo上已使用的会话连接数。其中,1表示数据库db_demo上已使用的会话连接数。
1 2 3 4 5
SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='db_demo'; count ------- 1 (1 row)
查看所有用户已使用会话连接数。
执行如下命令查看所有用户已使用的会话连接数。
1 2 3 4 5
SELECT COUNT(*) FROM PG_STAT_ACTIVITY; count ------- 10 (1 row)
- 用户不具备访问该数据库的权限。
- 使用管理员用户dbadmin连接数据库。
1
gsql -d human_resource -h 10.168.0.74 -U dbadmin -p 8000 -W password -r
- 赋予user1用户访问数据库的权限。
1
GRANT CONNECT ON DATABASE human_resource TO user1;
实际上,常见的许多错误操作也可能产生用户无法连接上数据库的现象。例如,用户连接的数据库不存在,用户名或密码输入错误等。这些错误操作在客户端工具会有相应的提示信息。
1 2 3 4 5
gsql -d human_resource -p 8000 gsql: FATAL: database "human_resource" does not exist gsql -d human_resource -U user1 -W password -p 8000 gsql: FATAL: Invalid username/password,login denied.
- 使用管理员用户dbadmin连接数据库。
- 网络连接故障。
请检查客户端与数据库服务器间的网络连接。如果发现从客户端无法PING到数据库服务器端,则说明网络连接出现故障。请联系技术支持工程师提供技术支持。
1 2 3 4 5 6 7 8
ping -c 4 10.10.10.1 PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data. From 10.10.10.1: icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=3 Destination Host Unreachable From 10.10.10.1 icmp_seq=4 Destination Host Unreachable --- 10.10.10.1 ping statistics --- 4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2999ms