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

时间:2016-11-18 22:07:30

标签: postgresql authentication jdbc liquibase

对PostgreSQL 9.6使用Liquibase 3.5.3命令行我无法使用包含@和!的密码的用户(例如postgres)进行身份验证字符。如果我更改密码以删除它们身份验证工作。其他用户也会这样。密码用@和!是正确的,并在其他应用程序中使用。

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

  

运行Liquibase时出现意外错误:org.postgresql.util.PSQLException:   致命:用户" postgres"

的密码验证失败

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

1 个答案:

答案 0 :(得分:0)

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

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这样的构建工具,它们的参考块将帮助你跳过这个问题。