首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过SSH和使用Spring连接到MySQL

问通过SSH和使用Spring连接到MySQL
EN

Stack Overflow用户
提问于 2018-01-17 08:08:27
回答 3查看 11.7K关注 0票数 4

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

代码语言:javascript
复制
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隧道!

我在谷歌上搜索了一下,但在任何地方都找不到满意的答案。

EN

回答 3

Stack Overflow用户

发布于 2018-01-17 08:38:00

我不认为春天可以为你创造一个SSH隧道,如果这是你想要的。如果您想在代码中这样做,您需要一个像jsch这样的框架。

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

代码语言:javascript
复制
ssh -L 3307:localhost:3306 serverIp

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

代码语言:javascript
复制
spring.datasource.url=jdbc:mysql://localhost:3307/
票数 9
EN

Stack Overflow用户

发布于 2021-08-21 11:33:21

我也有同样的问题。

我的解决方案解决了,

步骤1:在VPC 公共子网中创建ec2实例

步骤2:在安全组中这个ec2实例必须允许端口22 (SSH)

步骤3: RDS MySQL必须允许ec2实例访问私有ip。

步骤4: In Dev本地~>安装前向侦听器tcp_ip 开放终端

代码语言:javascript
复制
ssh -f <user>@<ec2-public-dns> -L <localhost_ip>:<localhost_port>:<rds_mysql_host_ip>:<rds_mysql_host_port> -N -i <private_key>.pem

示例:

代码语言:javascript
复制
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 连接

为我工作。^____^

票数 4
EN

Stack Overflow用户

发布于 2018-01-17 08:37:12

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

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48296313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档