【问题标题】:JHipster with Liquibase in productionJHipster 与 Liquibase 在生产中
【发布时间】:2017-06-23 03:32:22
【问题描述】:

我第一次使用生产配置文件部署 JHipster 应用程序,我希望 Liquibase 使用正确的表/行初始化数据库。

但是,当使用生产配置文件启动 jhipster 时,它只会导致无法连接到 MySQL 的异常。

Caused by: java.sql.SQLException: Access denied for user 'myusername'@'localhost' (using password: NO)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1710)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:95)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:101)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:316)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:518)
    ... 31 common frames omitted

错误表明它无法连接用户(在这篇文章中将其替换为“我的用户名”)并且没有使用密码进行连接。这就是问题所在,应该使用密码进行连接,但不知何故,这不是从配置中获取的。配置的相关部分:

spring:
    datasource:
        type: com.zaxxer.hikari.HikariDataSource
        url: jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf8&useSSL=false
        name:
        username: myusername
        password: SuperSecretPassword
        hikari:
            data-source-properties:
                cachePrepStmts: true
                prepStmtCacheSize: 250
                prepStmtCacheSqlLimit: 2048
                useServerPrepStmts: true
liquibase:
    contexts: prod
    password: SuperSecretPassword

我自己将密码添加到 liquibase.password 属性中,但这并没有改变任何东西。在其他帖子中,解决方案是不为数据库用户设置密码,但这不是我的首选。 有谁知道如何让它工作?

【问题讨论】:

    标签: java spring-boot liquibase jhipster


    【解决方案1】:

    我发现出了什么问题。使用 ${spring.datasource.password} 来引用 liquibase.password 字段中的数据库密码,但这显然不起作用。

    【讨论】:

      猜你喜欢
      • 2015-12-28
      • 2017-01-15
      • 1970-01-01
      • 2021-09-17
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多