Mariadb connection client: Access denied for user (using password: NO) on mysql 8.0(Mariadb 连接客户端:mysql 8.0 上的用户访问被拒绝(使用密码:否))
问题描述
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
在mysql中,测试用户被设置为hosts machine = %
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
成功:'mariadb-java-client',版本:'2.3.0',mysql 5.6
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.
这篇关于Mariadb 连接客户端:mysql 8.0 上的用户访问被拒绝(使用密码:否)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Mariadb 连接客户端:mysql 8.0 上的用户访问被拒绝(使用密码:否)


- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01