【问题标题】:Mariadb connection client: Access denied for user (using password: NO) on mysql 8.0Mariadb 连接客户端:mysql 8.0 上的用户访问被拒绝(使用密码:否)
【发布时间】:2019-06-08 20:13:04
【问题描述】:

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

  1. 在mysql中,测试用户被设置为hosts machine = %

  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://....)

【问题讨论】:

    标签: java mysql mariadb


    【解决方案1】:

    从 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 实施。

    【讨论】:

    • 谢谢...我用“mysql_native_password”更新了我的 Mysql 用户密码,它工作正常。 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    猜你喜欢
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2015-10-07
    • 2016-07-11
    相关资源
    最近更新 更多