字符集整合MySQL 8。x踩坑实践

  

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

  

下载8. x版本的驱动

  

首先需要下载<代码> 8。x 版本的驱动,字符集默认的MySQL驱动版本为<代码> 5. x> 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>   

 <代码类=" language-bash "> [root@txy-server/usr/local/mycat] # vim conf/schema.xml  
  

修改<代码> dataHost> dbDriver 属性为<代码> jdbc> writeHost> 属性:

  
 <代码类="语言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  

字符集整合MySQL 8。x踩坑实践