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

2022-01-15 00:00:00 mariadb mysql java

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

mariadb-java-client throws access denied on mysql 8.0, but works on mysql 5.6 So I wonder if mariadb client is compatible with mysql 8.0

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

  1. in mysql, test users are set limit to hosts machine = %

甚至在mysql 8.0的机器上测试过,同样的访问被拒绝错误.

even tested on mysql 8.0's machine, same access denied error.

<小时>

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 上的用户名和密码相同

Same user name and password on mysql 5.6 and 8.0

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

  1. Succeeded: 'mariadb-java-client', version: '2.3.0', mysql 5.6

失败:'mariadb-java-client',版本:'2.3.0',mysql 8.0

Failed: 'mariadb-java-client', version: '2.3.0', mysql 8.0

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

Succeeded: 'mysql-connector-java', version: '8.0.13' mysql 8.0 (jdbc:mysql://....)

推荐答案

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

MySQL 8 uses caching_sha2_password rather than mysql_native_password as of MySQL 5.7 (and MariaDB).

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

"caching_sha2_password, it is as of MySQL 8.0 the preferred authentication plugin, and is also the default authentication plugin rather than mysql_native_password. This change affects both the server and the libmysqlclient client library:"

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

MariaDB 的 Java 连接器尚未实现此功能,但已分配了一项任务:

MariaDB's Java Connector does not yet implement this, but has a task assigned:

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

为了连接到 MySQL 8,您必须使用 Oracle 连接器,另一个支持更改的连接器,或者等待 MariaDB 实施.

In order to connect to MySQL 8, you will have to use the Oracle connector, another connector that supports the change, or wait for MariaDB to implement.

相关文章