mariadb-java-client在mysql 8.0上拒绝访问,但在mysql 5.6上有效 所以我想知道mariadb客户端是否与mysql 8.0兼容
在mysql中,将测试用户的限制设置为主机=%
即使在mysql 8.0的计算机上进行了测试,同样的访问被拒绝错误。
Caused by: java.sql.SQLException: Access denied for user 'user1'@'192.168.238.1' (using password: NO)
Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
Connection connection = DriverManager.getConnection("jdbc:mariadb://192.168.0.2:3306/test", "user1", "admin@123");
Statement stmt = connection.createStatement();
stmt.executeUpdate("CREATE TABLE a (id int not null primary key, value varchar(20))");
stmt.executeUpdate("DROP TABLE a");
stmt.close();
connection.close();
在mysql 5.6和8.0上具有相同的用户名和密码
成功:“ mariadb-java-client”,版本:“ 2.3.0”,mysql 5.6
失败:“ mariadb-java-client”,版本:“ 2.3.0”,mysql 8.0
成功:'mysql-connector-java',版本:'8.0.13'mysql 8.0(jdbc:mysql:// ....)
答案 0 :(得分:2)
从MySQL 5.7(和MariaDB)开始,MySQL 8使用caching_sha2_password而不是mysql_native_password。
“ caching_sha2_password,它是MySQL 8.0中首选的身份验证插件,也是默认的身份验证插件,而不是mysql_native_password。此更改会影响服务器和libmysqlclient客户端库:”
MariaDB的Java连接器尚未实现,但是分配了一个任务:
https://jira.mariadb.org/browse/CONJ-663
要连接到MySQL 8,您将必须使用Oracle连接器(另一个支持该更改的连接器),或等待MariaDB实施。