Mycat 整合 MySQL 8.x 踩坑實踐

Mycat 目前還未全面支持MySQL 8以上的版本,可能會致使一些問題,例如Mycat鏈接MySQL 8時可能會報密碼錯誤,由於新版的密碼加密方式與舊版不同。還有就是時區問題,新版的鏈接方式須要增長時區參數。除此以外,可能還會有一些其餘問題。所以,咱們須要更改Mycat的一些配置,讓其能正常鏈接MySQL 8.x。java

下載8.x版本的驅動

首先須要下載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

修改 schema.xml

修改位於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>

修改 server.xml

修改位於conf目錄下的server.xml配置文件:ide

[root@txy-server /usr/local/mycat]# vim conf/server.xml

useHandshakeV10設置爲1,若是沒該標籤則添加便可:工具

<system>
    <property name="useHandshakeV10">1</property>
    ...
</system>

重啓 Mycat 並測試

重啓 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
相關文章
相關標籤/搜索