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,谁更易于填坑补锅?

vsftpd利用pam_mysql.so连接mariadb进行认证

centos7上mariadb主从复制

远程连接MySQL(MariaDB)数据库

Mariadb安装

CentOS 7 yum安装MySQL