字符集目前还未全面支持MySQL 8以上的版本,可能会导致一些问题,例如字符集连接MySQL 8时可能会报密码错误,因为新版的密码加密方式与旧版不一样,还有就是时区问题,新版的连接方式需要增加时区参数。除此之外,可能还会有一些其他问题,因此,我们需要更改字符集的一些配置,让其能正常连接MySQL 8. x。
下载8. x版本的驱动
首先需要下载<代码> 8。x 代码>版本的驱动,字符集默认的MySQL驱动版本为<代码> 5. x> 代码。到maven中央仓库上复制8. x驱动jar包的下载地址,然后到Linux上使用<代码> wget 代码>命令进行下载:
<代码类=" language-bash "> 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 代码>
将驱动包移动到字符集的<代码>自由> 代码目录下,并删除原本的<代码> 5. x 代码>驱动包:
<代码类=" language-bash "> [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射频/usr/local/mycat/lib/mysql-connector-java-5.1.35.jar 代码>
接着使用chmod <代码> 代码>命令设置该驱动包的权限:
<代码类=" language-bash "> [root@txy-server/usr/local/mycat] # chmod 777 lib/mysql-connector-java-8.0.18。jar 代码><人力资源/>
修改schema.xml
修改位于<代码>设计> 代码目录下的<代码> schema.xml> 代码配置文件,目的是更改字符集连接MySQL的方式:
<代码类=" language-bash "> [root@txy-server/usr/local/mycat] # vim conf/schema.xml 代码>
修改<代码> dataHost> 代码标签中的<代码> dbDriver 代码>属性为<代码> jdbc> 代码,以及修改<代码> writeHost> 代码标签中的url <代码> 代码>属性:
<代码类="语言xml "> & lt; dataHost name=" localhost1 " maxCon=" 1000 " minCon=?0”平衡=" 0 " writeType=" 0 " dbType=" mysql " dbDriver=癹dbc switchType”=?”slaveThreshold=" 100 "比; & lt; heartbeat>选择用户()& lt;/heartbeat> & lt; writeHost主机=" hostM1 " url=" jdbc: mysql://192.168.130.28:3306 ? useSSL=false& serverTimezone=% 2 b8格林尼治时间” 用户="根" 密码=" 123456 "比; & lt;/writeHost> & lt;/dataHost> 代码><人力资源/>
修改server.xml
修改位于<代码>设计> 代码目录下的<代码> server.xml> 代码配置文件:
<代码类=" language-bash "> [root@txy-server/usr/local/mycat] # vim conf/server.xml 代码>
将<代码> useHandshakeV10 代码>设置为<代码> 1> 代码,如果没该标签则添加即可:
<代码类="语言xml "> & lt; system> & lt;属性名=" useHandshakeV10 "祝辞1 & lt;/property> … & lt;/system> 代码><人力资源/>
重启字符集并测试
重启字符集:
<代码类=" language-bash "> [root@txy-server/usr/local/mycat] #字符集停止 停止Mycat-server…… Mycat-server停了下来。 [root@txy-server/usr/local/mycat] #字符集的开始 开始Mycat-server…… [root@txy-server/usr/local/mycat] # 代码>
在测试能否正常连接字符集时又遇到了另一个问题,使用MySQL 8。x的客户端工具连接字符集报了个密码错误:
<代码类=" language-bash "> [root@txy-server ~] # mysql -uroot - p -P9066 -h227.0.0.1 输入密码: 错误1045 (HY000):拒绝访问用户‘根’,因为密码错误 (root@txy-server ~) # 代码>
同样,这也是因为MySQL 8以上的版本与之前版本的密码加密方式不一样。而字符集目前还是只支持5. x版本的加密方式,所以使用8以上版本的MySQL客户端工具连接字符集时就会报密码错误。
解决方式主要有两种,一是指定mysql客户端连接时的加密方式。如下示例:
<代码类=" language-bash "> [root@txy-server ~] # mysql -uroot - p -P9066 -h227.0.0.1——default-auth=mysql_native_password 代码>
二是采用5。x版本的MySQL客户端工具来连接字符集。如下示例:
<代码类=" language-bash "> [root@txy-server/usr/local/mysql-5.7.28] # bin/mysql -uroot - p -P9066 -h227.0.0.1 代码>