public class XXXCoreApplication {
public static void main(String[] args) throws SQLException {
Connection connection = null;
Session session = null;
String host = "XX.XXX.XX.XXX";
String servUser = "user";
String servPwd = "pass";
int port = 22;
String rhost = "localhost";
int rport = 3306;
int lport = 3307;
String driverName = "com.mysql.jdbc.Driver";
String db2Url = "jdbc:mysql://localhost:" + lport + "/xxx_core";
String dbUsr = "MT";
String dbPwd = "****";
try {
JSch jsch = new JSch();
// Get SSH session
session = jsch.getSession(servUser, host, port);
session.setPassword(servPwd);
java.util.Properties config = new java.util.Properties();
// Never automatically add new host keys to the host file
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
// Connect to remote server
session.connect();
// Apply the port forwarding
session.setPortForwardingL(lport, rhost, rport);
// Connect to remote database
Class.forName(driverName);
connection = DriverManager.getConnection(db2Url, dbUsr, dbPwd);
System.out.println("Connection to database established!");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null && !connection.isClosed()) {
connection.close();
}
if (session != null && session.isConnected()) {
session.disconnect();
}
}
SpringApplication.run(XXXCoreApplication.class, args);
}
“无法确定数据库类型None的嵌入式数据库驱动程序类”
我应该给Application.Properties中的spring.datasource.url值什么?或者其他建议?谢了。
您正在关闭finally
块中的SSH隧道。
我建议您也让Spring创建SSH隧道,而不是在main
方法中创建。这将允许您为不同的环境选择启用/禁用隧道,并且可以使用属性和其他Spring Boot特性来配置、启动和停止隧道。
像这样的东西会管用的。
public class SshTunnelStarter {
@Value("${ssh.tunnel.url}")
private String url;
@Value("${ssh.tunnel.username}")
private String username;
@Value("${ssh.tunnel.password}")
private String password;
@Value("${ssh.tunnel.port:22}")
private int port;
private Session session;
@PostConstruct
public void init() throws Exception {
JSch jsch = new JSch();
// Get SSH session
session = jsch.getSession(servUser, host, port);
session.setPassword(servPwd);
java.util.Properties config = new java.util.Properties();
// Never automatically add new host keys to the host file
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
// Connect to remote server
session.connect();
// Apply the port forwarding
session.setPortForwardingL(lport, rhost, rport);
}
@PreDestroy
public void shutdown() throws Exception {
if (session != null && session.isConnected()) {
session.disconnect();
}
}
}
问题内容: 我正在尝试使用mysql_connect从PHP通过SSL连接到远程MySQL服务器: 并得到最严重的错误: 我在my.cnf中添加了以下参数: 所以我可以使用终端从终端成功连接到远程mysql 因此,到mysql服务器的连接正常工作,据我了解,问题出在php / mysql合作中。可能我缺少一些参数。 不幸的是我不能使用mysqli lib,因为pdo_mysql有太多可用的适配器。
我正在为自己清除一些涉及到MYSQL的远程SSL连接的信息。特别是,一旦我设置了MYSQL以启用SSL并有一个需要SSL的远程用户。 这就是我如何与需要SSL的用户远程连接(命令行)到MYSQL的方式: mysql-uMyUserName-p-h192.168.5.5-sslca/path/to/ca.pem 我的问题是:为什么我必须作为客户端提供ca.pem文件? 以下是我在服务器上安装mysq
问题内容: 我在由远程MySQL数据库支持的分布式环境中部署Play应用程序。具体来说,应用程序托管在heroku上,数据库位于Amazon RDS上(尽管这实际上适用于任何远程数据库连接)。由于数据库不仅位于本地主机上,为了安全起见,我更希望通过SSL建立远程MySQL连接。 给定要信任的CA证书,只有可以验证主机证书的情况下,如何配置Play应用程序以通过SSL连接到MySQL服务器? 假定这
问题内容: 我一直在localhost上建立一个网络,当我尝试在主机上移动它时,它显示了很多错误。似乎无法连接到我的本地数据库。这是代码: 这是输出: 感谢帮助 问题答案: 这是mysql用户权限问题。例如,使用phpmyadmin创建一个新用户,如果从localhost连接,则将其主机设置为localhost;如果从外部连接,则将其主机设置为%。
问题内容: 如何从Java应用程序通过SSH连接到远程MySQL数据库?小代码示例对我有所帮助,对此我将不胜感激。 问题答案: 我的理解是,您想访问在远程计算机上运行的mysql服务器,并通过SSH隧道侦听端口3306。 要使用命令行ssh客户端从本地计算机上的端口1234到远程计算机上的端口3306的隧道,您可以从本地计算机上键入以下命令: 要从Java执行相同的操作,可以使用JSch(SSH2
我从Java应用程序通过SSL连接到MySQL。我已经将MYSQL配置为支持SSL并生成客户端证书。我已将服务器CA证书和客户端证书导入密钥库。这就是我的代码目前的样子 我想使用带有C3p0的spring通过SSL连接到MYSQL。这是我的spring配置文件,它从jdbc读取参数。财产。 如何配置spring来设置属性verifyServerCertificate=true useSSL=tru