【问题标题】:Connecting to MySql using Java - SSL Connection使用 Java 连接到 MySql - SSL 连接
【发布时间】:2015-09-05 16:08:37
【问题描述】:

我一直在尝试连接到使用ssl与java连接的MySql数据库并且遇到问题,如果有人可以帮助我将有很大的帮助。

手动连接到 MySql:

我们使用 MySQL Workbench,参数 - 主机名 - "test-db1-ro-xxxxxx.net" ,端口 - 3306 ,用户名,密码。 有一个SSL CA文件——mysql-ssl-ca-cert.pem,手动连接成功。

我在java中尝试过同样的方法(在windows系统中) 我的代码:

String url = "jdbc:mysql://test-db1-ro.apdev.XXXXXX.net:3306/database";
String driver = "com.mysql.jdbc.Driver"; 
String userName = "XXXXXXXX"; 
String password = "XXXXXXXX";
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(url,userName,password);

当我运行代码时,我收到“拒绝访问”错误 我认为这是由于 SSL 连接。

在这种情况下,我不知道如何使用 .pem 文件与数据库建立安全连接。

有人可以帮忙吗,做过各种各样的事情,但总是遇到相同的访问被拒绝错误。

完整堆栈跟踪:

java.sql.SQLException: Access denied for user 'xxxxxxxx' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:885)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3421)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1247)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at TestDBConnection.main(TestDBConnection.java:34)

【问题讨论】:

  • 你可以从阅读这个dev.mysql.com/doc/connector-j/en/…开始
  • 使用 .pem 文件创建了一个密钥库,然后如下更改了我的代码,但仍然出现问题。你能想到别的吗?字符串 url = "jdbc:mysql://test-db1-ro.apdev.XXXXX.net:3306/database" + "&useSSL=true" + "&requireSSL=true" ; System.setProperty("javax.net.ssl.keyStore","path"); System.setProperty("javax.net.ssl.keyStorePassword","password");
  • 您能否提供完整的堆栈跟踪,或者“访问被拒绝”来自的任何错误消息?

标签: java mysql ssl jdbc


【解决方案1】:

您无法进行身份验证。
在 MySql 终端上:

GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

如果问题仍然存在:

GRANT ALL ON *.* TO 'user'@'%' WITH GRANT OPTION;

此命令授予您超级用户权限。

FLUSH PRIVILEGES;

确保您的权限已加载。

注意:请勿在可公开访问的网站上使用此帐户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多