0x0 场景
昨天测试一半的业务因为授权问题终止,因是虚拟机也没有关机直接下班了,第二天发现业务无法正常访问,但是数据库端口网页8443端口正常,查看业务相关的服务状态发现好几个服务下均有数据库连接被拒绝的相关报错:
服务状态下报错:
Access denied for user 'root'@'localhost' (using password: YES)
数据库状态下报错:
[Warning] Access denied for user 'root'@'localhost' (using password: YES)
监听日志:
tail -f /var/log/messages 多窗口开启日志滚动,浏览器访问业务发现报错
Access denied for user 'root'@'localhost' (using password: YES)
注:此时数据库是可以正常连接的。
0x1 排查
因排除数据库端口冲突、排除网络IP地址冲突、数据库可以正常本地和远程登录排除数据库故障,又因报错是拒绝连接相关,所以排查方向往root密码重置、root登录权限方向。
查看root用户密码:
SELECT user, password FROM user WHERE User = 'root';
发现root 密码全部为空,重新设置一下root密码
update user set password=password('123')where user='root';
flush privileges;
重新重启数据库服务再次访问业务发现还是404,重启服务器后还是报错。
查看root主机访问权限:
select host,user from mysql.user where user='root';
无异常
查看root加密方式:
select user, plugin from mysql.user;
发现root角色加密方式没有全部统一;
update mysql.user set authentication_string=PASSWORD('123'), plugin='mysql_native_password' where user='root';
退出数据库重启数据库服务,然后浏览器访问业务恢复正常。