Mariadb连接客户端:在mysql 8.0上拒绝用户访问(使用密码:NO)

时间:2019-01-14 19:56:49

标签: java mysql mariadb

mariadb-java-client在mysql 8.0上拒绝访问,但在mysql 5.6上有效 所以我想知道mariadb客户端是否与mysql 8.0兼容

  1. 在mysql中,将测试用户的限制设置为主机=%

  2. 即使在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上具有相同的用户名和密码

  1. 成功:“ mariadb-java-client”,版本:“ 2.3.0”,mysql 5.6

  2. 失败:“ mariadb-java-client”,版本:“ 2.3.0”,mysql 8.0

  3. 成功:'mysql-connector-java',版本:'8.0.13'mysql 8.0(jdbc:mysql:// ....)

1 个答案:

答案 0 :(得分:2)

从MySQL 5.7(和MariaDB)开始,MySQL 8使用caching_sha2_password而不是mysql_native_password。

“ caching_sha2_password,它是MySQL 8.0中首选的身份验证插件,也是默认的身份验证插件,而不是mysql_native_password。此更改会影响服务器和libmysqlclient客户端库:”

https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

MariaDB的Java连接器尚未实现,但是分配了一个任务:

https://jira.mariadb.org/browse/CONJ-663

要连接到MySQL 8,您将必须使用Oracle连接器(另一个支持该更改的连接器),或等待MariaDB实施。