在我的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隧道!
我在谷歌上搜索了一下,但在任何地方都找不到满意的答案。
发布于 2018-01-17 08:38:00
我不认为春天可以为你创造一个SSH隧道,如果这是你想要的。如果您想在代码中这样做,您需要一个像jsch这样的框架。
最好的解决方案是手动在服务器上创建SSH隧道,或者使用autossh (保持它)。要手动创建隧道,请登录到应用服务器并在屏幕上运行以下命令:
ssh -L 3307:localhost:3306 serverIp3306是mysql正在运行的端口。3307是你要转发的港口。使用此隧道,您现在可以通过以下方法进行连接:
spring.datasource.url=jdbc:mysql://localhost:3307/发布于 2021-08-21 11:33:21
我也有同样的问题。
我的解决方案解决了,
步骤1:在VPC 公共子网中创建ec2实例
步骤2:在安全组中这个ec2实例必须允许端口22 (SSH)
步骤3: RDS MySQL必须允许ec2实例访问私有ip。
步骤4: In Dev本地~>安装前向侦听器tcp_ip 开放终端
ssh -f <user>@<ec2-public-dns> -L <localhost_ip>:<localhost_port>:<rds_mysql_host_ip>:<rds_mysql_host_port> -N -i <private_key>.pem示例:
ssh -f ec2-user@ec2-public-dns -L dev-mysql-c-lib.internal:3306:***.ap-southeast-1.rds.amazonaws.com:3306 -N -i ~/.ssh/ec2-instance.pem

步骤5:文件配置应用程序中的-dev.yml
将主机从internal-dns公共dns改为
示例:
主机:‘**..ap东南-1.rds.amazonaws.com’
至
主机:‘dev-mysql-c-lib.side’
jdbc:mysql://dev-mysql-c-lib.internal:3306/mydb:spring.datasource.url
最后运行Spring
查找MySQL 连接
为我工作。^____^
发布于 2018-01-17 08:37:12
如果您的数据库使用自签名证书,则与您在问题中使用的相同,但useSSL=true除外,可能还有verifyServerCertificate=false。
https://stackoverflow.com/questions/48296313
复制相似问题