通过SSH和Spring Boot连接到MySQL

时间:2018-01-17 08:08:27

标签: java mysql spring spring-boot ssh

在我的Spring Boot应用WAR中,我有一个application.properties文件,其中我定义了以下datasource属性:

spring.datasource.url=jdbc:mysql://localhost/test?autoReconnect=true&useSSL=false&rewriteBatchedStatements=true
spring.datasource.username=used
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

有了这个,我就能连接到数据库了。

现在,我想通过SSH tunnel连接到另一个数据库。我应该如何指定spring.datasource.url才能获得此类连接?

请注意我不想编写任何样板的Java代码来执行此SSH隧道!

P.S。我用Google搜索,但无法在任何地方找到满意的答案。

2 个答案:

答案 0 :(得分:2)

我不认为Spring可以为您创建一个SSH隧道,如果这是您正在寻找的东西。如果你想在代码中执行它,你需要一个像jsch这样的框架。

最好的解决方案是手动或使用autossh在服务器上创建SSH隧道(以保持它)。 要手动创建隧道,请登录到您的应用服务器并在屏幕中运行此命令:

ssh -L 3307:localhost:3306 serverIp

3306是mysql正在运行的端口。 3307是您要转发的端口。 使用此隧道,您现在可以使用以下方式进行连接:

spring.datasource.url=jdbc:mysql://localhost:3307/

答案 1 :(得分:-2)

与您在问题中使用的相同,除了useSSL = true,如果您的数据库使用自签名证书,则可能是verifyServerCertificate = false。