使用Java连接到MySql - SSL连接

时间:2015-06-19 15:40:04

标签: java mysql ssl jdbc

我一直在尝试连接到使用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文件建立与数据库的安全连接。

可以帮助一些人,做过各种各样的事情,但总是得到相同的拒绝访问错误。

Full StackTrace:

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)

1 个答案:

答案 0 :(得分:0)

您无法通过身份验证 在MySql终端上:

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

如果问题仍然存在:

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

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

FLUSH PRIVILEGES;

确保加载您的权限。

注意:请勿在拥有公共访问权限的网站上使用此帐户。