1、程序启动过程中MySQL报错
(1)报错内容
Caused by: com.mysql.cj.exceptions.CJException: null, message from server: "Host '172.21.10.8' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
(2)错误分析
首先数据库使用Navicat访问正常,但是应用访问就是不行,即使重启mysql实例也没效果。最后定位到,应该是短时间内产生了大量中断的数据库连接导致,而且失败的连接数量超过了mysql的max_connection_errors的最大值。
(3)解决方法
a、登录mysql,使用 flush hosts来命令清理hosts文件
flush hosts;
b、调整mysql的最大连接数和最大错误连接数的大小
查看mysql最大错误连接数
show variables like '%max_connect_errors%'
查看mysql最大连接数:
show variables like 'max_connections';
修改连接数大小:
set global max_connections = 1000;
set global max_connect_errors = 1000;
2、迁移MySQL数据目录启动报错
(1)报错内容
SELinux is preventing /usr/sbin/mysqld from write access on the directory data. For complete SELinux messages run: sealert -l 0870e79d-b258-4169-9bfa-da89 10月 25 20:16:42 bogon python[17908]: SELinux is preventing /usr/sbin/mysqld from write access on
(2)错误分析
SELinux(Security-Enhanced Linux)是一种基于策略的访问控制机制,它会监控系统中的每一个操作,并决定是否允许这个操作的执行。报错信息表明SELinux阻止了/usr/sbin/mysqld
(即MySQL服务进程)对目录da
的写入访问。
(3)解决方法
a、临时关闭SELinux
执行以下命令可以临时将SELinux置于宽容模式(Permissive mode),允许操作但不强制执行策略,从而可以进行调试。
sudo setenforce 0
调试完成后,可以通过以下命令重新启用SELinux:
sudo setenforce 1
b、永久关闭SELinux
1)编辑 /etc/selinux/config
文件
sudo nano /etc/selinux/config
2)将 SELINUX
设置为 disabled
在文件中找到以下行:
SELINUX=enforcing
将其修改为(如果它不存在,则添加这行):
SELINUX=disabled
3)保存并关闭文件
按下Esc,然后输入下面命令保存
:wq
4)重启服务器,使修改生效
sudo reboot
3、迁移MySQL数据目录之后要给新的目录授权
授权示例命令如下:
chown mysql:mysql /usr/local/mysql/mysql
chmod -R 777 /usr/local/mysql/