原因: docker容器运行服务时jdk的tls导致mysql连接不上的问题解决
问题描述:JDK1.8默认禁用了SSLv3,TLSv1, TLSv1.1协议,使用的是TLS1.2协议,而数据库使用的是TLS1.0协议,因此需要修改JDK的协议,使其打开TLS1.0协议。
原因1:说明mysqld已经得到了大量(max_connect_errors)的主机’hostname’的在中途被中断了的连接请求。在 max_connect_errors次失败请求后,mysqld认定出错了(像来自一个黑客的攻击),并且阻止该站点进一步的连接,直到某人执行命令 mysqladmin flush-hosts。
解决办法: cd /usr/local/mysql/bin mysqladmin flush-hosts |
原因2:因为公司需要把项目和数据库分开进行,所以有2台服务器,直接修改连接池ip后,出现了ava.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect这样的错误,它的意思就是安装了数据库的服务器不允许部署项目的服务器进行远程连接。也就是权限问题,修改权限就可以了,修改方法是。
|
flush privileges; 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。
MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。
通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。
如果无法执行,可能你没有权限,让公司运维人员去修改数据库权限