前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mycat 整合 MySQL 8.x 踩坑实践

Mycat 整合 MySQL 8.x 踩坑实践

作者头像
端碗吹水
发布2020-09-23 10:21:46
2.4K0
发布2020-09-23 10:21:46
举报
文章被收录于专栏:程序猿的大杂烩

Mycat 目前还未全面支持MySQL 8以上的版本,可能会导致一些问题,例如Mycat连接MySQL 8时可能会报密码错误,因为新版的密码加密方式与旧版不一样。还有就是时区问题,新版的连接方式需要增加时区参数。除此之外,可能还会有一些其他问题。因此,我们需要更改Mycat的一些配置,让其能正常连接MySQL 8.x。

下载8.x版本的驱动

首先需要下载8.x版本的驱动,Mycat 默认的MySQL驱动版本为5.x。到maven中央仓库上复制8.x驱动jar包的下载地址,然后到Linux上使用wget命令进行下载:

代码语言:javascript
复制
[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驱动包:

代码语言:javascript
复制
[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命令设置该驱动包的权限:

代码语言:javascript
复制
[root@txy-server /usr/local/mycat]# chmod 777 lib/mysql-connector-java-8.0.18.jar 

修改 schema.xml

修改位于conf目录下的schema.xml配置文件,目的是更改Mycat连接MySQL的方式:

代码语言:javascript
复制
[root@txy-server /usr/local/mycat]# vim conf/schema.xml

修改dataHost标签中的dbDriver属性为jdbc,以及修改 writeHost 标签中的url属性:

代码语言:javascript
复制
<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配置文件:

代码语言:javascript
复制
[root@txy-server /usr/local/mycat]# vim conf/server.xml

useHandshakeV10设置为1,如果没该标签则添加即可:

代码语言:javascript
复制
<system>
    <property name="useHandshakeV10">1</property>
    ...
</system>

重启 Mycat 并测试

重启 Mycat:

代码语言:javascript
复制
[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 报了个密码错误:

代码语言:javascript
复制
[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客户端连接时的加密方式。如下示例:

代码语言:javascript
复制
[root@txy-server ~]# mysql -uroot -p -P9066 -h127.0.0.1 --default-auth=mysql_native_password

二是采用5.x版本的MySQL客户端工具来连接 Mycat。如下示例:

代码语言:javascript
复制
[root@txy-server /usr/local/mysql-5.7.28]# bin/mysql -uroot -p -P9066 -h127.0.0.1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/01/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下载8.x版本的驱动
  • 修改 schema.xml
  • 修改 server.xml
  • 重启 Mycat 并测试
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档