Linux中Mycat远程连接Mysql8.0提示密码错误
问题:
当在linux中使用mycat远程连接时候会提示密码错误,具体如下:
解决
防火墙
最开始以为是防火墙未关闭
通过查看防火墙状态发现确实是开启的
firewall-cmd --state
然后关闭防火墙
systemctl stop firewalld.service
最终还是不行
远程权限
又怀疑是MySQL中没有给远程权限,通过以下方式给权限仍未未解决(不过必须要给mysql远程连接的权限)
配置文档及jar包
通过多篇博客查询修改/mycat/conf/schema.xml文件中的url为:
url=“jdbc:mysql://localhost?useSSL=false?useSSL=false&serverTimezone=UTC"
但是这样去修改后出现以下错误
[root@node-1 bin]# ./mycat console Running Mycat-server... wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | jvm 1 | jvm 1 | WrapperSimpleApp: Encountered an error running main: java.lang.ExceptionInInitializerError jvm 1 | java.lang.ExceptionInInitializerError jvm 1 | at io.mycat.MycatStartup.main(MycatStartup.java:53) jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) jvm 1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) jvm 1 | at java.lang.reflect.Method.invoke(Method.java:498) jvm 1 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240) jvm 1 | at java.lang.Thread.run(Thread.java:748) jvm 1 | Caused by: io.mycat.config.util.ConfigException: java.lang.NumberFormatException: For input string: "mysql://192.168.153.129:3306?useSSL=false&serverTimezone=UTC" jvm 1 | at io.mycat.config.loader.xml.XMLSchemaLoader.load(XMLSchemaLoader.java:121) jvm 1 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:78) jvm 1 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:82) jvm 1 | at io.mycat.config.ConfigInitializer.<init>(ConfigInitializer.java:76) jvm 1 | at io.mycat.config.MycatConfig.<init>(MycatConfig.java:72) jvm 1 | at io.mycat.MycatServer.<init>(MycatServer.java:180) jvm 1 | at io.mycat.MycatServer.<clinit>(MycatServer.java:121) jvm 1 | ... 7 more jvm 1 | Caused by: java.lang.NumberFormatException: For input string: "mysql://192.168.153.129:3306?useSSL=false&serverTimezone=UTC" jvm 1 | at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) jvm 1 | at java.lang.Integer.parseInt(Integer.java:580) jvm 1 | at java.lang.Integer.parseInt(Integer.java:615) jvm 1 | at io.mycat.config.loader.xml.XMLSchemaLoader.createDBHostConf(XMLSchemaLoader.java:725) jvm 1 | at io.mycat.config.loader.xml.XMLSchemaLoader.loadDataHosts(XMLSchemaLoader.java:835) jvm 1 | at io.mycat.config.loader.xml.XMLSchemaLoader.load(XMLSchemaLoader.java:113) jvm 1 | ... 13 more wrapper | <-- Wrapper Stopped
最终的解决办法为找到/mycat/lib/中的mysql-connector-java-5.1.35.jar 然后删除掉将mysql-connector-java-8.0.11.jar驱动放进lib文件夹(maven官网可以下载MySQL的驱动)然后在给jar包赋予权限
chmod 777 mysql-connector-java-8.0.11.jar
在修改/mycat/conf/中server.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!-- - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://io.mycat/"> <system> <property name="defaultSqlParser">druidparser</property> <property name="useHandshakeV10">1</property> <!--(这里记得修改)--> <property name="mutiNodeLimitType">1</property> <property name="charset">utf8</property> <property name="serverPort">8066</property> <property name="managerPort">9066</property> </system> <user name="root" defaultAccount="true"> <property name="password">root</property> <property name="schemas">TESTDB</property> <property name="defaultSchema">TESTDB</property> </user> </mycat:server>
在修改/mycat/conf/中schema.xml文件
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema> <dataNode name="dn1" dataHost="host1" database="msb" /> <dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.153.132:3306" user="root" password="root"> <readHost host="hostS1" url="192.168.153.132:3306" user="root" password="root"></readHost> </writeHost> </dataHost> </mycat:schema>
成功解决
连接mycat
最后远程连接mycat启动,由于mysql8.0加密问题--default_auth=mysql_native_password是必须要加的
mysql -uroot -proot -P8066 -h192.168.153.132 --default_auth=mysql_native_password
其中参考文档