2015-06-19 314 views
3

我一直在嘗試連接到MySql數據庫,它使用與java的ssl連接並遇到麻煩,如果任何人可以幫助我將會有很大的幫助。使用Java連接到MySql - SSL連接

手動連接到MySQL的:

我們使用MySQL工作臺,參數 - 主機名 - 「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) 
+0

您可以從閱讀本文開始http://dev.mysql.com/doc/connector-j/en/connector-j-reference-using-ssl.html – Stephan

+0

使用.pem文件創建密鑰庫,然後更改我的代碼如下,但仍然有問題。 你能想到別的嗎? String 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」); – Sanathan

+0

您可以提供完整的堆棧跟蹤,或「拒絕訪問」來自哪個錯誤消息? –

回答

0

你有麻煩了驗證。
上的MySQL終端:

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

如果問題仍然存在:

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

此命令授予您超級用戶權限。

FLUSH PRIVILEGES; 

確保您的權限已加載。

注意:請勿在有公共訪問權限的網站上使用此帳戶。