1. ERROR 1045 (HY000): Access denied for user ‘root’, because password is error
启动mycat
D:\Mycat-server-1.6.7.5-release-20200410174409-win\mycat\bin>mycat start
wrapper | Starting the Mycat-server service...
wrapper | Mycat-server started.
在测试能否正常连接 Mycat 时遇到了一个问题,使用MySQL 8.x的客户端工具连接 Mycat 报了个密码错误:
F:\Java\MySQL8\bin>mysql -uroot -h127.0.0.1 -P8066 -p
Enter password: ****
ERROR 1045 (HY000): Access denied for user 'root', because password is error
这是因为MySQL 8以上的版本与之前版本的密码加密方式不一样。而 Mycat 目前还是只支持5.x版本的加密方式,所以使用8以上版本的MySQL客户端工具连接Mycat时就会报密码错误。
解决方式主要有两种,一是指定mysql客户端连接时的加密方式。如下示例:
F:\Java\MySQL8\bin>mysql -uroot -p -P8066 -h127.0.0.1 --default-auth=mysql_native_password
二是采用5.x版本的MySQL客户端工具来连接 Mycat。如下示例:
F:\Java\MySQL5\bin>mysql -uroot -p -P8066 -h227.0.0.1
2. Java.sql.SQLException: Unknown system variable ‘query_cache_size’
MyCat自带的JDBC驱动jar还是5.1.x版的,若使用JDBC连接MySql 8,会报错,必须用8.0.x版的JDBC驱动jar代替才行。
3.ERROR 1105 (HY000): backend connect: java.lang.IllegalArgumentException: Invalid DataSource:0
如果dataHost的driverType为JDBC,则还需要修改url,增加useSSL=false和serverTimezone=UTC选项,某些情况下还需加上characterEncoding=utf8选项(可选),例如:
url=“jdbc:mysql://192.168.64.187:3306?useSSL=false&serverTimezone=UTC& characterEncoding=utf8”