使用Java连接到MySql - SSL连接
问题描述:
我一直在尝试连接到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)
答
你有麻烦了验证。
上的MySQL终端:
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
如果问题仍然存在:
GRANT ALL ON *.* TO 'user'@'%' WITH GRANT OPTION;
此命令授予您超级用户权限。
FLUSH PRIVILEGES;
确保您的权限已加载。
注意:请勿在有公共访问权限的网站上使用此帐户。
您可以从阅读本文开始http://dev.mysql.com/doc/connector-j/en/connector-j-reference-using-ssl.html – Stephan
使用.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
您可以提供完整的堆栈跟踪,或“拒绝访问”来自哪个错误消息? –