能否配置Liquibase使用SSH隧道?支持通过liquibase.properties等方式吗?
Liquibase通过SSH隧道连接数据库的配置方法
当然可以!Liquibase完全支持通过SSH隧道连接各类数据库,我自己平时也会这么配置,主要有两种常用方式,给你详细拆解下:
方式一:手动建立SSH隧道后使用Liquibase
这是最通用的方法,不管Liquibase版本如何都能生效:
- 先在本地终端手动建立SSH端口转发隧道,命令格式如下:
举个例子,比如要通过SSH服务器ssh -L 本地端口:目标数据库主机:目标数据库端口 SSH用户名@SSH服务器地址ssh.example.com连接内部的MySQL数据库db.internal:3306,可以执行:ssh -L 3307:db.internal:3306 user@ssh.example.com - 然后在
liquibase.properties里配置数据库连接时,把主机换成localhost,端口换成刚才指定的本地端口即可:
这样Liquibase就会通过你手动建立的SSH隧道连接到目标数据库了。liquibase.url=jdbc:mysql://localhost:3307/your_database_name liquibase.username=db_user liquibase.password=db_password
方式二:通过Liquibase内置SSH隧道配置(推荐)
从Liquibase 4.10版本开始,官方支持直接在配置文件里开启SSH隧道,不用手动建隧道,更省心:
你只需要在liquibase.properties里添加以下SSH相关配置,同时数据库URL用目标数据库的内部地址即可:
# 数据库基础配置 liquibase.url=jdbc:mysql://db.internal:3306/your_database_name liquibase.username=db_user liquibase.password=db_password # SSH隧道配置 liquibase.ssh.enabled=true liquibase.ssh.host=ssh.example.com liquibase.ssh.port=22 # 默认是22,如果你SSH端口不是22就改这里 liquibase.ssh.username=ssh_user # 可选:如果用密码登录SSH liquibase.ssh.password=ssh_password # 可选:如果用密钥登录SSH(推荐更安全) liquibase.ssh.privateKeyPath=/home/your_user/.ssh/id_rsa liquibase.ssh.privateKeyPassword=your_key_passphrase # 如果密钥有密码的话才需要
注意事项
- 如果你用密钥登录,一定要确保私钥文件的权限设置为
600(即chmod 600 /path/to/your/key),否则Liquibase可能会报错无法读取密钥。 - 内置SSH隧道功能需要Liquibase 4.10及以上版本,如果你的版本比较旧,建议升级后再用这个方法。
内容的提问来源于stack exchange,提问作者EvenLisle
相关产品推荐
相关产品推荐

