Mycat 目前还未全面支持MySQL 8以上的版本,可能会致使一些问题,例如Mycat链接MySQL 8时可能会报密码错误,由于新版的密码加密方式与旧版不同。还有就是时区问题,新版的链接方式须要增长时区参数。除此以外,可能还会有一些其余问题。所以,咱们须要更改Mycat的一些配置,让其能正常链接MySQL 8.x。java
首先须要下载8.x
版本的驱动,Mycat 默认的MySQL驱动版本为5.x
。到maven中央仓库上复制8.x驱动jar包的下载地址,而后到Linux上使用wget
命令进行下载:mysql
[root@txy-server ~]# cd /usr/local/src [root@txy-server /usr/local/src]# wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar
将驱动包移动到mycat的lib
目录下,并删除本来的5.x
驱动包:sql
[root@txy-server /usr/local/src]# mv mysql-connector-java-8.0.18.jar /usr/local/mycat/lib/ [root@txy-server /usr/local/src]# rm -rf /usr/local/mycat/lib/mysql-connector-java-5.1.35.jar
接着使用chmod
命令设置该驱动包的权限:vim
[root@txy-server /usr/local/mycat]# chmod 777 lib/mysql-connector-java-8.0.18.jar
修改位于conf
目录下的schema.xml
配置文件,目的是更改Mycat链接MySQL的方式:bash
[root@txy-server /usr/local/mycat]# vim conf/schema.xml
修改dataHost
标签中的dbDriver
属性为jdbc
,以及修改 writeHost
标签中的url
属性:maven
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="jdbc:mysql://192.168.130.28:3306?useSSL=false&serverTimezone=GMT%2B8" user="root" password="123456"> </writeHost> </dataHost>
修改位于conf
目录下的server.xml
配置文件:ide
[root@txy-server /usr/local/mycat]# vim conf/server.xml
将useHandshakeV10
设置为1
,若是没该标签则添加便可:工具
<system> <property name="useHandshakeV10">1</property> ... </system>
重启 Mycat:测试
[root@txy-server /usr/local/mycat]# mycat stop Stopping Mycat-server... Stopped Mycat-server. [root@txy-server /usr/local/mycat]# mycat start Starting Mycat-server... [root@txy-server /usr/local/mycat]#
在测试可否正常链接 Mycat 时又遇到了另外一个问题,使用MySQL 8.x的客户端工具链接 Mycat 报了个密码错误:加密
[root@txy-server ~]# mysql -uroot -p -P9066 -h127.0.0.1 Enter password: ERROR 1045 (HY000): Access denied for user 'root', because password is error [root@txy-server ~]#
一样,这也是由于MySQL 8以上的版本与以前版本的密码加密方式不同。而 Mycat 目前仍是只支持5.x版本的加密方式,因此使用8以上版本的MySQL客户端工具链接Mycat时就会报密码错误。
解决方式主要有两种,一是指定mysql客户端链接时的加密方式。以下示例:
[root@txy-server ~]# mysql -uroot -p -P9066 -h127.0.0.1 --default-auth=mysql_native_password
二是采用5.x版本的MySQL客户端工具来链接 Mycat。以下示例:
[root@txy-server /usr/local/mysql-5.7.28]# bin/mysql -uroot -p -P9066 -h127.0.0.1