java - 无法使用 PAM、Java 连接到 MariaDB
问题描述
我使用过 Java8、MariaDB 和 Percona 提供的 PAM 模块。
$ java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 117218
Server version: 10.3.9-MariaDB-log MariaDB Server
我可以从命令行连接。但是当我尝试使用 mysql-connector-java-8.0.15.jar 从 Java 连接时,它失败了
java.sql.SQLException: Unable to load authentication plugin 'dialog'.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:85)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
... 10 more
Caused by: com.mysql.cj.exceptions.WrongArgumentException: Unable to load authentication plugin 'dialog'.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)
at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:572)
at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:202)
at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1449)
at com.mysql.cj.NativeSession.connect(NativeSession.java:165)
at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:955)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825)
... 14 more
解决方案
推荐阅读
- c - 在 printf 中使用括号无法正常工作
- python - 如何将具有属性数组的类解析为json
- django - 'ContentType' 对象在数据迁移中没有属性 'model_class'
- c# - 反序列化 JSON 凭证数据时出错。谷歌云文件上传 C# Asp.Net
- java - 如何查找类的泛型类型并将值转换为该类型?
- javascript - 以角度 2 形式拆分输入值
- php - 在PHP中的字符串中的每一行之后添加一个句号
- c# - Sendgrid 与他人建立链接 - 让他们正确
- python - 如何将非正态分布的数据拆分成一些应该正态分布的样本
- qt - QCanBus 无法正常工作的问题