Liquibase 无法使用 @ 和 ! 对用户进行身份验证在密码中

Liquibase unable to authenticate user with @ and ! in password

针对 PostgreSQL 9.6 使用 Liquibase 3.5.3 命令行 我无法使用密码包含 @ 和 ! 的用户(例如 postgres)进行身份验证人物。如果我更改密码以删除它们,则身份验证有效。其他用户也会出现这种情况。带有@和!的密码正确并用于其他应用程序。

我正在使用来自 PostgreSQL 的 jdbc 4.2 驱动程序和 java 1.8 运行时。

Unexpected error running Liquibase: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"

使用 jdbc 和 Liquibase 时,密码有什么独特之处吗?

如果您使用的是命令行,为每个特殊字符添加反斜杠即可解决问题。

java -jar liquibase.jar \
  --driver=oracle.jdbc.OracleDriver \
  --classpath=\path\to\classes:jdbcdriver.jar \
  --changeLogFile=com/example/db.changelog.xml \
  --url="jdbc:oracle:thin:@localhost:1521:oracle" \
  --username=scott \
  --password=\!\@tiger$\%\
  update

或者您可以使用 liquibase 属性 文件并将所有参数放入该文件中。这样就可以在密码中使用原来的特殊字符了。

如果您使用 Gradle 或 Ant 等构建工具,它们的参考块将帮助您跳过此问题。