当前位置: 首页 > 知识库问答 >
问题:

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

慕麒
2023-03-14

mariadb-java-client抛出的访问在MySQL8.0上被拒绝,但在MySQL5.6上可以工作,所以我想知道mariadb client是否与MySQL8.0兼容

>

  • 在mysql中,测试用户被设置为主机限制机器=%

    即使在MySQL8.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

  • 共有1个答案

    通沛
    2023-03-14

    MySQL8使用caching_sha2_password而不是mysql_native_password(从MySQL5.7(和MariaDB)开始)。

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

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

    MariaDB的Java连接器还没有实现这一点,但已经分配了一个任务:

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

    为了连接到MySQL8,您必须使用Oracle连接器(另一个支持更改的连接器),或者等待MariaDB实现。

     类似资料: