问题现象
用户通过客户端工具gsql无法连接到数据库。
原因分析
- 系统连接数量超过了最大连接数量,会显示如下错误信息。
gsql -d human_resource -h 10.168.0.74 -U user1 -p 8000 -W Bigdata@123 -r gsql: FATAL: sorry, too many clients already
- 用户不具备访问该数据库的权限,会显示如下错误信息。
gsql -d human_resource -h 10.168.0.74 -U user1 -p 8000 -W Bigdata@123 - gsql: FATAL: permission denied for database "human_resource" DETAIL: User does not have CONNECT privilege.
- 网络连接故障。
解决办法
- 系统连接超过最大连接数量。
关于查看用户会话连接数的方法如表1。
表1 查看会话连接数 描述
命令
查看指定用户的会话连接数上限。
执行如下命令查看连接到指定用户USER1的会话连接数上限。其中-1表示没有对用户user1设置连接数的限制。
SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='user1'; rolname | rolconnlimit ---------+-------------- user1 | -1 (1 row)
查看指定用户已使用的会话连接数。
执行如下命令查看指定用户USER1已使用的会话连接数。其中,1表示USER1已使用的会话连接数。
SELECT COUNT(*) FROM V$SESSION WHERE USERNAME='user1'; count ------- 1 (1 row)
查看指定数据库的会话连接数上限。
执行如下命令查看连接到指定数据库gaussdb的会话连接数上限。其中-1表示没有对数据库gaussdb设置连接数的限制。
SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='gaussdb'; datname | datconnlimit ----------+-------------- postgres | -1 (1 row)
查看指定数据库已使用的会话连接数。
执行如下命令查看指定数据库gaussdb上已使用的会话连接数。其中,1表示数据库gaussdb上已使用的会话连接数。
SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='gaussdb'; count ------- 1 (1 row)
查看所有用户已使用会话连接数。
执行如下命令查看所有用户已使用的会话连接数。
SELECT COUNT(*) FROM PG_STAT_ACTIVITY; count ------- 10 (1 row)
- 用户不具备访问该数据库的权限。
- 使用管理员用户dbadmin连接数据库。
gsql -d human_resource -h 10.168.0.74 -U dbadmin -p 8000 -W Bigdata@123 -
- 赋予该用户访问数据库的权限。
GRANT CONNECT ON DATABASE human_resource TO user1;
说明:实际上,常见的许多错误操作也可能产生用户无法连接上数据库的现象。如用户连接的数据库不存在,用户名或密码输入错误等。这些错误操作在客户端工具也有相应的提示信息。
gsql -d human_resource -p 8000 gsql: FATAL: database "human_resource" does not exist gsql -d human_resource -U user1 -W gauss@789 -p 8000 gsql: FATAL: Invalid username/password,login denied.
- 使用管理员用户dbadmin连接数据库。
- 网络连接故障。
请检查客户端与数据库服务器间的网络连接。如果发现从客户端无法PING到数据库服务器端,则说明网络连接出现故障。请联系技术支持工程师提供技术支持。
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