我一直在尝试连接到使用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)
答案 0 :(得分:0)
您无法通过身份验证 在MySql终端上:
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
如果问题仍然存在:
GRANT ALL ON *.* TO 'user'@'%' WITH GRANT OPTION;
此命令授予您超级用户权限。
FLUSH PRIVILEGES;
确保加载您的权限。
注意:请勿在拥有公共访问权限的网站上使用此帐户。