3. Liquibase 安装与配置:下载安装、环境变量、liquibase.properties 文件详解、数据库驱动配置

Liquibase 的安装与配置是数据库迁移工作的起点。本章将系统讲解从下载安装、环境变量设置到核心配置文件 liquibase.properties 的详细参数,以及数据库驱动的正确配置方法,确保你能够快速搭建一个可用的 Liquibase 运行环境。

3.1 下载与安装

Liquibase 提供多种安装方式,推荐使用官方压缩包或包管理器进行安装。以下是主流安装途径的对比:

安装方式 适用场景 命令/步骤
官方压缩包 所有平台,手动控制版本 下载 liquibase-<version>.tar.gz 或 .zip,解压至目标目录
Homebrew (macOS) macOS 开发者 brew install liquibase
Chocolatey (Windows) Windows 开发者 choco install liquibase
Docker 容器化环境、CI/CD docker pull liquibase/liquibase
推荐做法: 生产环境建议使用官方压缩包安装,便于版本锁定和路径管理;开发环境可使用包管理器快速部署。

以官方压缩包安装为例,步骤如下:

  1. 访问 Liquibase 官方下载页面,选择对应操作系统的最新稳定版。
  2. 解压到指定目录,例如 /opt/liquibase(Linux/macOS)或 C:\liquibase(Windows)。
  3. 验证安装:在终端执行 liquibase --version,应显示版本号信息。
# Linux/macOS 示例
$ tar -xzf liquibase-4.27.0.tar.gz -C /opt/liquibase
$ /opt/liquibase/liquibase --version
####################################################
##   _     _             _ _                      ##
##  | |   (_)           (_) |                     ##
##  | |    _  __ _ _   _ _| |__   ___  ___        ##
##  | |   | |/ _` | | | | | '_ \ / _ \/ __|       ##
##  | |___| | (_| | |_| | | |_) |  __/\__ \       ##
##  \_____/_|\__, |\__,_|_|_.__/ \___||___/       ##
##              | |                                ##
##              |_|                                ##
####################################################
Liquibase Version: 4.27.0

3.2 环境变量配置

为方便在任意路径下调用 Liquibase 命令,需要将 Liquibase 的 bin 目录添加到系统 PATH 环境变量中。同时,建议设置 LIQUIBASE_HOME 变量,便于其他工具引用。

环境变量 说明 示例值
LIQUIBASE_HOME Liquibase 安装根目录 /opt/liquibase
PATH 追加 Liquibase bin 目录 $PATH:$LIQUIBASE_HOME
LIQUIBASE_CLASSPATH 数据库驱动 JAR 文件路径(可选) /opt/liquibase/lib/mysql-connector-j-8.2.0.jar
# Linux/macOS 在 ~/.bashrc 或 ~/.zshrc 中添加
export LIQUIBASE_HOME=/opt/liquibase
export PATH=$PATH:$LIQUIBASE_HOME
export LIQUIBASE_CLASSPATH=$LIQUIBASE_HOME/lib

# Windows 在系统环境变量中设置
LIQUIBASE_HOME=C:\liquibase
PATH=%PATH%;%LIQUIBASE_HOME%
LIQUIBASE_CLASSPATH=%LIQUIBASE_HOME%\lib
注意: 如果使用 Docker 方式运行,无需配置本地环境变量,但需通过 -e 参数或 Docker Compose 传递环境变量到容器内。

3.3 liquibase.properties 文件详解

liquibase.properties 是 Liquibase 的核心配置文件,用于集中管理数据库连接、变更日志路径、驱动类等参数。该文件通常放置在项目根目录或用户主目录下,Liquibase 会自动加载。

以下是一个典型的 liquibase.properties 文件内容:

# 数据库连接配置
changeLogFile: db/changelog/db.changelog-master.xml
url: jdbc:mysql://localhost:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true
username: db_user
password: db_password
driver: com.mysql.cj.jdbc.Driver

# 输出与日志配置
outputFile: liquibase_output.log
logLevel: INFO

# 默认 schema 与 catalog
defaultSchemaName: my_schema
defaultCatalogName: my_catalog

# 其他常用参数
liquibase.hub.mode: off
liquibase.pro.mode: off

关键参数说明:

参数名 必填 说明 示例
changeLogFile 是 主变更日志文件路径(相对于项目根目录) db/changelog/db.changelog-master.xml
url 是 数据库 JDBC 连接 URL jdbc:mysql://localhost:3306/mydb
username 是 数据库用户名 db_user
password 是 数据库密码(可留空,通过命令行或环境变量传入) db_password
driver 是 数据库驱动类的全限定名 com.mysql.cj.jdbc.Driver
defaultSchemaName 否 默认使用的数据库 schema my_schema
logLevel 否 日志级别:OFF, SEVERE, WARNING, INFO, DEBUG, FINE INFO
outputFile 否 将日志输出到指定文件 liquibase_output.log
最佳实践: 密码不建议明文写在 liquibase.properties 中。可通过命令行参数 --password 传入,或使用环境变量 LIQUIBASE_PASSWORD 替代,避免敏感信息泄露。

3.4 数据库驱动配置

Liquibase 通过 JDBC 驱动与数据库通信,因此必须将对应数据库的驱动 JAR 文件放置在 Liquibase 的 classpath 中。驱动配置分为两步:下载驱动 JAR 文件,并确保 Liquibase 能够加载它。

常见数据库驱动及 Maven 坐标:

数据库 驱动类 Maven 坐标 (groupId:artifactId:version)
MySQL 8+ com.mysql.cj.jdbc.Driver com.mysql:mysql-connector-j:8.2.0
PostgreSQL org.postgresql.Driver org.postgresql:postgresql:42.7.1
Oracle oracle.jdbc.OracleDriver com.oracle.database.jdbc:ojdbc11:23.3.0.23.09
SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver com.microsoft.sqlserver:mssql-jdbc:12.4.2.jre11
H2 (开发/测试) org.h2.Driver com.h2database:h2:2.2.224

驱动加载方式:

  1. 直接放入 lib 目录: 将驱动 JAR 文件复制到 $LIQUIBASE_HOME/lib/ 目录下,Liquibase 启动时自动加载。
  2. 通过 CLASSPATH 环境变量: 设置 LIQUIBASE_CLASSPATH 指向驱动 JAR 所在目录或具体文件。
  3. 命令行指定: 使用 --classpath 参数临时指定驱动路径。
# 方式一:复制到 lib 目录
cp mysql-connector-j-8.2.0.jar $LIQUIBASE_HOME/lib/

# 方式二:设置环境变量
export LIQUIBASE_CLASSPATH=/path/to/drivers/mysql-connector-j-8.2.0.jar

# 方式三:命令行指定
liquibase --classpath=/path/to/drivers/mysql-connector-j-8.2.0.jar \
          --driver=com.mysql.cj.jdbc.Driver \
          --url="jdbc:mysql://localhost:3306/mydb" \
          --username=db_user \
          --password=db_password \
          status
常见错误: 如果遇到 Driver class not found 异常,请检查驱动 JAR 是否在 classpath 中,以及 driver 参数是否填写了正确的驱动类全限定名。不同数据库版本可能对应不同的驱动类名(例如 MySQL 5.x 使用 com.mysql.jdbc.Driver,MySQL 8+ 使用 com.mysql.cj.jdbc.Driver)。

3.5 配置验证与测试

完成上述配置后,建议执行一次 liquibase status 命令来验证配置是否正确。该命令会尝试连接数据库并显示当前变更日志的状态,而不会实际执行任何变更。

# 验证配置
liquibase status --verbose

# 预期输出示例
Liquibase Community 4.27.0 by Liquibase
Running Changeset: db/changelog/db.changelog-master.xml::1::author
1 changesets have been deployed to mydb
0 changesets have not been applied to mydb

如果输出显示连接成功并列出变更集状态,说明安装与配置已全部完成,可以进入下一阶段的变更日志编写与迁移执行。

快速排障: 若连接失败,优先检查:① 数据库服务是否运行;② 连接 URL 中的主机、端口、数据库名是否正确;③ 用户名密码是否有误;④ 防火墙是否放行对应端口;⑤ 驱动 JAR 版本是否与数据库版本兼容。
Liquibase 安装与配置流程 Liquibase 安装与配置流程 1. 下载安装 官方压缩包 / 包管理器 2. 环境变量 PATH / LIQUIBASE_HOME 3. 配置文件 liquibase.properties 4. 驱动配置 JDBC JAR / classpath 5. 验证测试 liquibase status 配置要点 • 驱动 JAR 必须与数据库版本兼容,否则连接失败 • 密码建议通过环境变量或命令行传入,避免明文存储 • 使用 liquibase status 验证配置,不产生实际变更