2017-02-06 2 views
1

Ich stelle zum ersten Mal eine JHipster App mit dem Produktionsprofil bereit und möchte, dass Liquibase die Datenbank mit den richtigen Tabellen/Zeilen initialisiert.JHipster mit Liquibase in Produktion

Wenn jedoch jhipster mit dem Produktionsprofil gestartet wird, führt dies nur zu einer Ausnahme, die besagt, dass es keine Verbindung zu MySQL herstellen kann.

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 

Der Fehler sagt es nicht in der Lage für Benutzer (ersetzt es mit ‚myusername‘ für diesen Beitrag) zu verbinden und dass kein Passwort für die Verbindung verwendet wird. Hier ist das Problem, ein Passwort sollte für die Verbindung verwendet werden, aber irgendwie wird dies nicht von der Konfiguration übernommen. Die relevanten Teile der Konfiguration:

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 

ich das Passwort an die liquibase.password Eigenschaft selbst hinzugefügt haben, aber das hat nichts ändern. In anderen Posts war die Lösung, kein Passwort für den Datenbankbenutzer zu setzen, aber das ist nicht meine bevorzugte Option. Weiß jemand, wie man das funktioniert?

Antwort

1

Ich fand heraus, was falsch war. Wird $ {spring.datasource.password} verwendet, um auf das Datenbankkennwort im Feld liquibase.password zu verweisen, das aber anscheinend nicht funktioniert.