2015-06-19 347 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; 

确保您的权限已加载。

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