java - 无法创建连接:Could not connect: Client does not support authentication protocol requested by server

标签 java mysql mariadb

从 maria db 获取连接时出现以下错误:

DEBUG com.utilities.db.ConnectionPoolImpl - Exception Occured in connection: Cannot create connection:Could not connect: Client does not support authentication protocol requested by server; consider upgrading MariaDB client
Exception in thread "Thread-1" java.lang.IllegalMonitorStateException
        at java.lang.Object.notifyAll(Native Method)
        at com.utilities.db.ConnectionPoolImpl.run(ConnectionPoolImpl.java:128)
        at java.lang.Thread.run(Thread.java:745)


+-------------------------+--------------------------+
| Variable_name           | Value                    |
+-------------------------+--------------------------+
| innodb_version          | 5.6.35-80.0              |
| protocol_version        | 10                       |
| slave_type_conversions  |                          |
| version                 | 10.1.23-MariaDB-9+deb9u1 |
| version_comment         | Raspbian 9.0             |
| version_compile_machine | armv7l                   |
| version_compile_os      | debian-linux-gnueabihf   |
| version_malloc_library  | system jemalloc          |
| version_ssl_library     | YaSSL 2.4.2              |
| wsrep_patch_version     | wsrep_25.19              |
+-------------------------+--------------------------+

我正在使用java连接到数据库。

Class.forName("org.drizzle.jdbc.DrizzleDriver");

Connection connection = DriverManager.getConnection(""jdbc:drizzle://" + ADDRESS + ":" + PORT + "/" + DB", userName, password);

Connection connection = DriverManager.getConnection(
                        "jdbc:drizzle://" + DBProperties.ADDRESS + ":" + DBProperties.PORT + "/?allowMultiQueries=true",
                        DBProperties.USER, DBProperties.PASS)

<dependency>
        <groupId>org.drizzle.jdbc</groupId>
        <artifactId>drizzle-jdbc</artifactId>
        <version>1.4</version>
    </dependency>

我不知道为什么我会得到这个,有人可以帮助我吗?

最佳答案

请尝试遵循 https://mariadb.com/kb/en/library/about-mariadb-connector-j/ 中的建议

我将从您的 Maven 依赖项中删除 drizzle 驱动程序,并包含最新版本的 mariaDB 连接器

<dependency>
    <groupId>org.mariadb.jdbc</groupId>
    <artifactId>mariadb-java-client</artifactId>
    <version>2.2.3</version>
</dependency>

然后我将替换您的官方示例的客户端代码:

Connection connection = DriverManager.getConnection("jdbc:mariadb://localhost:3306/DB?user=foo&password=bar");

具有适当的端口、用户等值。我希望你觉得它有用

关于java - 无法创建连接:Could not connect: Client does not support authentication protocol requested by server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49631605/

相关文章:

java - 无法在 jsp 中使用 ${data} 显示数据,而 request.getAttribute ("data")确实返回值

mysql - 为大文件加载数据文件(无警告,无错误,无行受影响)

mysql - MariaDB 内存使用过多

java - Quartz 作业已完成但线程仍处于阻塞状态

java - 将属性白名单从一个类实例复制到另一个实例

mysql - MySQL根据列值将数据从表复制到归档表

javascript - Sequelize.js 一对多关系外键

mysql - 无法为 docker MariaDB 容器备份持久存储容器

MysqlTurner 改进我的 mysql-mariaDB 的技巧

java - Java main 函数中 args 的分割规则?