我正在尝试使用Java Rest WebService
与JDBC
进行连接。
首先,我使用MySQL Workbench成功连接了用户名和密码以及一个额外的细节,我需要添加一个“SSL的证书颁发机构文件的路径”并且工作,我能够连接和使用。我有证书可以使用数据库远程。
现在我正在尝试使用Java进行连接,这就是我尝试的方式:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConexaoBD {
// Define o Metodo de Conexao quando a classe � chamada
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public Connection obtemConexao() throws SQLException {
System.getProperties().setProperty("javax.net.ssl.trustStore","/mysqlcertificate.pem");
return DriverManager.getConnection("jdbc:mysql://myHost", "myUsername", "myPassword");
}
}
我研究了把URL中的useSSL = true但是没有用,或者这个system.getproperties
,我也在项目包和我的课程包中找到.pem
文件(因为我不喜欢)知道我需要放置文件的地方是什么。)
我应该怎么做才能连接?没有这个SSL,数据库拒绝我的连接,我试图以这种方式连接另一个类:
Connection conn = null;
Statement stm = null;
try {
ConexaoBD bd = new ConexaoBD();
conn = bd.obtemConexao();
任何人都可以帮助我吗?
答案 0 :(得分:0)
我的情况类似,但不一样。我可以从工作台连接到MySQL,但不能从我的代码连接到MySQL。在工作台中选择的唯一选项是useSSL(如果可用)。 在这种情况下,下面的代码对我有用。
private String db_server = BaseMethods.getSystemData("db_server");
private String db_user = BaseMethods.getSystemData("db_user");
private String db_password = BaseMethods.getSystemData("db_password");
private void connectToDb() throws Exception {
String jdbcDriver = "com.mysql.jdbc.Driver";
String dbUrl = "jdbc:mysql://" + db_server +
"?verifyServerCertificate=false" +
"&useSSL=true" +
"&requireSSL=true";
System.setProperty(jdbcDriver, "");
Class.forName(jdbcDriver).newInstance();
Connection conn = DriverManager.getConnection(dbUrl, db_user, db_password);
Statement statement = conn.createStatement();
}