问题描述
开启服务器应用,出现报错:
问题原因
应用连接数据库失败,尝试次数达到最高次数,最终导致了失败
问题处理
分为以下几点进行排查:
(1) 判断连接数据库的URL与用户、密码是否正确(绝大部分是因为这个)
例如配置的数据库信息如下:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/tt
jdbc.username=test
jdbc.password=test@020
验证很简单,利用这个账号名与密码看能否进入数据库
mysql -utest -ptest@020
(2) 检查数据库的权限
可能连接该数据库的test用户主机没有该数据库的权限。
需要在数据库中进行权限的设置
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
(3) 连接数超过最大连接数的问题
可以查看一下当前数据库的变量设置:
进入mysql查看
show variables
查看max_connections,一般是101,这里我设置过一次,改为13154了
show status
查看thread_connected的数值
若两个数值很接近,说明连接数不够,需要去修改。
修改的话,需要去配置文件进行修改,
一般在/etc/mysql/,修改my.cnf
如果是mariadb,需要在/etc/mysql/mariadb.conf.d,修改50-server.conf
增加:
max_connections = 32000 # 虽然设置了32000,但是实际最大就是1万多,看版本
修改完毕后重启数据库,然后进行数据库中再次查看max_connections的值是否改变
问题验证
重启应用,判断问题是否解决
题外话
小潘的个人微信公众号【小潘学程序】,有兴趣可给个关注~
一起学习,一起成长