Mycat 整合 MySQL 8.x 踩坑实践
时间:2022-07-25
本文章向大家介绍Mycat 整合 MySQL 8.x 踩坑实践,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Mycat 目前还未全面支持MySQL 8以上的版本,可能会导致一些问题,例如Mycat连接MySQL 8时可能会报密码错误,因为新版的密码加密方式与旧版不一样。还有就是时区问题,新版的连接方式需要增加时区参数。除此之外,可能还会有一些其他问题。因此,我们需要更改Mycat的一些配置,让其能正常连接MySQL 8.x。
下载8.x版本的驱动
首先需要下载8.x
版本的驱动,Mycat 默认的MySQL驱动版本为5.x
。到maven中央仓库上复制8.x驱动jar包的下载地址,然后到Linux上使用wget
命令进行下载:
[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
驱动包:
[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
命令设置该驱动包的权限:
[root@txy-server /usr/local/mycat]# chmod 777 lib/mysql-connector-java-8.0.18.jar
修改 schema.xml
修改位于conf
目录下的schema.xml
配置文件,目的是更改Mycat连接MySQL的方式:
[root@txy-server /usr/local/mycat]# vim conf/schema.xml
修改dataHost
标签中的dbDriver
属性为jdbc
,以及修改 writeHost
标签中的url
属性:
<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
配置文件:
[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
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Kotlin学习日志(三)控制语句
- Kotlin学习日志(一)TextView、Button、Toast的使用
- Kotlin学习日志(二)数据类型
- Toast提示工具类
- RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
- MD5加密工具类
- Kotlin修炼指南(四)
- Android Studio 安装APK在虚拟机时报 Installation failed due to: 'null' 解决
- 在Android Studio中使用Kotlin
- Day21.Python项目案例
- Day18.python文件/目录
- Kotlin学习日志(六)控件使用
- Android 天气APP(一)开发准备
- Android 天气APP(二)获取定位信息
- Android 天气APP(三)访问天气API与数据请求