mycat的schema.xml配置反复确认都是正常的
mycat中间件遇坑记_第1张图片

但是mycat死活连接不上mysql,查看控制台信息才发现一下错误信息:

can't connect to mysql server ,errmsg:Host '172.20.0.5' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' MySQLConnection [id=72, lastTime=1595346208574, user=root, schema=my_db1, old shema=my_db1, borrowed=false, fromSlaveDB=false, threadId=0, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=172.20.0.2, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.backend.mysql.nio.MySQLConnectionAuthenticator:MySQLConnectionAuthenticator.java:91) 

mycat中间件遇坑记

分析原因:
之前升级mysql8,安全加密方式使用了caching_sha2_password。在这期间mycat连接mysql错误次数超过mysql的max_connect_errors,于是一直被拒绝。

mysql参数max_connect_errors解释:

指定允许连接不成功的最大尝试次数。5.7默认是100;如果到达这个数,那么服务器将不再允许新的连接,即便mysql仍正常对外提供服务。


解决思路:
修改mysql的最大错误连接次数配置.(最好在my.cnf中修改)

mysql> set global max_connect_errors = 1000;
Query OK, 0 rows affected (0.01 sec)

mysql> flush hosts;
Query OK, 0 rows affected (0.01 sec)

最终告捷。
mycat中间件遇坑记