Mariadb 连接客户端:mysql 8.0 上的用户访问被拒绝(使用密码:否)
Posted
技术标签:
【中文标题】Mariadb 连接客户端:mysql 8.0 上的用户访问被拒绝(使用密码:否)【英文标题】:Mariadb connection client: Access denied for user (using password: NO) on mysql 8.0 【发布时间】:2019-06-08 20:13:04 【问题描述】:mariadb-java-client 在 mysql 8.0 上抛出访问被拒绝,但在 mysql 5.6 上有效 所以我想知道mariadb客户端是否兼容mysql 8.0
在mysql中,测试用户被设置为hosts machine = %
甚至在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 上的用户名和密码相同
成功:'mariadb-java-client',版本:'2.3.0',mysql 5.6
失败:'mariadb-java-client',版本:'2.3.0',mysql 8.0
成功:'mysql-connector-java',版本:'8.0.13' mysql 8.0 (jdbc:mysql://....)
【问题讨论】:
【参考方案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';
以上是关于Mariadb 连接客户端:mysql 8.0 上的用户访问被拒绝(使用密码:否)的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 8.0与MariaDB 10.4,谁更易于填坑补锅?