一 问题描述
有同事反馈,程序连不上数据库,报错:
ERROR 1129 (HY000): Host '::ffff:192.168.161.106' is temporarily blocked due to too many authentication failures.
我们数据库架构是mariadb(一主一从)+maxscale。
奇怪的是,在192.168.161.106上访问mariadb主从都能正常连接,但从maxscale就没法正常访问,报如上错误。
二 问题排查
通过查看mariadb错误日志,看到有如下报错:
2021-01-07 14:08:17 155876 [Warning] Access denied for user 'rms'@'%' to database 'rms_data'
执行show grants for 'rms';发现rms用户并没有访问rms_data的权限
三 解决办法
为rms用户授予访问rms_data的权限:
grant all privileges on rms_data.* to rms;
执行flush hosts;
四 总结
当程序通过maxscale连接数据库时,假如该用户没权限访问某个要访问的数据库,程序频繁连接不上会被数据库怀疑是暴力破解,因此程序所在服务器就会被阻塞,被禁止再连接了,哪怕换个用户,也连不上了。
所以用户权限问题不能忽视,别忘了授权。