![Liquibase 通过 SSH 连接到远程 mysql 实例](https://linux22.com/image/1600985/Liquibase%20%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9E%E6%8E%A5%E5%88%B0%E8%BF%9C%E7%A8%8B%20mysql%20%E5%AE%9E%E4%BE%8B.png)
我正在自动化部署我的“LAMP”应用程序。目前,我有一个 Jenkins 设置,其中包含一个用于部署到我完全控制的本地环境的管道。为了确保数据库架构同步,我将目光投向了 liquibase。我的问题是如何编写管道脚本以连接到远程服务器。
我会用类似的东西
scp db.changelog-1.1.xml remotehost:/path/to/
ssh remotehost liquibase --driver=com.mysql.cj.jdbc.Driver --classpath=mysql-connector-java-8.0.17.jar --changeLogFile=/path/to/db.changelog-1.1.xml --url="jdbc:mysql://127.0.0.1:3306/dbname?autoReconnect=true&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" --username=user --password=secretpass update
但是目标服务器上没有JVM,我没有安装它的可能性。
我的第二个想法是建立 SSH 隧道
ssh -L 3307:127.0.0.1:3306 remoteHost &
liquibase --driver=com.mysql.cj.jdbc.Driver --classpath=mysql-connector-java-8.0.17.jar --changeLogFile=/path/to/db.changelog-1.1.xml --url="jdbc:mysql://127.0.0.1:3307/dbname?autoReconnect=true&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" --username=user --password=secretpass update
我的问题有两个:
- 如何在使用后终止 SSH 隧道?
- 有没有更好的方法在詹金斯管道脚本中建立隧道?