Я использую MySQL Дополнение ClearDB Heroku. Я использую учетные данные, предоставленные ClearDB, и могу успешно подключиться к базе данных с помощью MySQL Workbench и моего приложения Spring Boot, работающего на Localhost.
Я развернул тот же код Spring в Heroku, используя то же приложение Файл .properties, но я получаю эту ошибку из журнала Heroku (после «перезапуска всех Dynos»):
2020-03-10T01:36:59.915901+00:00 app[web.1]: 2020-03-10 01:36:59.914 ERROR 4 --- [ main] o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool.
2020-03-10T01:36:59.915915+00:00 app[web.1]:
2020-03-10T01:36:59.915915+00:00 app[web.1]: java.sql.SQLException: Access denied for user 'bf8f34598eb4cc'@'ec2-54-173-188-68.compute-1.amazonaws.com' (using password: YES)
2020-03-10T01:36:59.915916+00:00 app[web.1]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
2020-03-10T01:36:59.915916+00:00 app[web.1]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
2020-03-10T01:36:59.915917+00:00 app[web.1]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
2020-03-10T01:36:59.915917+00:00 app[web.1]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
2020-03-10T01:36:59.915917+00:00 app[web.1]: at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1710) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
После прочтения этого поста ( с использованием% для хоста при создании MySQL User ) мне кажется, что проблема в следующем: @ 'ec2-54-173-188-68.compute-1.amazon aws .com
Я хотел бы добавить, что не долго a go Мне удалось подключиться к базе данных с моего локального хоста и с Heroku, и у меня никогда не было этой проблемы раньше.
Мой файл application.properties:
spring.datasource.url=jdbc:mysql://us-cdbr-iron-east-05.cleardb.net/mydatabase
spring.datasource.username=bf8f34598eb4cc
spring.datasource.password=mypassword
несколько недель go Я перезапустил пароль, и я уверен, что я использую правильный. Кроме того, я использовал конфигурационные переменные в application.properties, например:
spring.datasource.url=${JDBC_DATABASE_URL}
spring.datasource.username=${JDBC_DATABASE_USERNAME}
spring.datasource.password=${JDBC_DATABASE_PASSWORD}
Сначала я подумал, что эти конфигурационные переменные не работают, но после замены их фактическими значениями для имени пользователя и пароля URL он все еще не работает.
ОБНОВЛЕНИЕ:
Некоторые вещи, которые я проверял в MySQL Рабочая среда:
выберите current_user ();
bf8f34598eb4cc@%
показать гранты для current_user;
Grants for bf8f34598eb4cc@%
---------------------------
GRANT USAGE ON *.* TO \'bf8f34598eb4cc\'@\'%\' IDENTIFIED BY PASSWORD <secret> WITH MAX_QUERIES_PER_HOUR 3600 MAX_USER_CONNECTIONS 10
GRANT ALL PRIVILEGES ON `MyDatabase`.* TO 'bf8f34598eb4cc'@'%'
ПОКАЗАТЬ ГРАНТЫ ДЛЯ 'bf8f34598eb4 cc' @ 'ec2-54-173-188-68.compute-1.amazon aws .com';
Error Code: 1141. There is no such grant defined for user 'bf8f34598eb4cc' on host 'ec2-54-173-188-68.compute-1.amazonaws.com'
GRANT USAGE ON . TO 'bf8f34598eb4cc'@'ec2-54-173-188-68.compute-1.amazonaws.com' ИДЕНТИФИЦИРОВАНО ПО ПАРОЛУ 'С MAX_QUERIES_PER_HOUR 3600 MAX_USER_CONNECTIONS 10 ; ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА heroku_02499bf04b215f2
. * TO 'bf8f34598eb4 cc' @ 'ec2-54-173-188-68.compute-1.amazon aws .com';
Error Code: 1045. Access denied for user 'bf8f34598eb4cc'@'%' (using password: YES)
UPDATE2 : Теперь я попытался выбрать пользователя (); снова в MySQL верстаке. Вот результат:
bf8f34598eb4cc@ec2-54-173-188-68.compute-1.amazonaws.com
Это тот же удаленный хост, с которым у меня были проблемы раньше, но я знаю, что он отображается в ClearDB как «текущий хост». Почему этот удаленный хост внезапно получил доступ?
Я пытался получить доступ из Heroku, но теперь доступ к этому удаленному хосту запрещен: 'ec2-18-206-248-191.compute-1.amazon aws .com. Вот журнал Heroku:
2020-03-10T15:38:45.624024+00:00 app[web.1]: 2020-03-10 15:38:45.623 ERROR 4 --- [io-59874-exec-2] o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool.
2020-03-10T15:38:45.624025+00:00 app[web.1]:
2020-03-10T15:38:45.624026+00:00 app[web.1]: java.sql.SQLException: Access denied for user 'bf8f34598eb4cc'@'ec2-18-206-248-191.compute-1.amazonaws.com' (using password: YES)
2020-03-10T15:38:45.624027+00:00 app[web.1]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
2020-03-10T15:38:45.624027+00:00 app[web.1]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
2020-03-10T15:38:45.624028+00:00 app[web.1]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
2020-03-10T15:38:45.624028+00:00 app[web.1]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
2020-03-10T15:38:45.624029+00:00 app[web.1]: at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1710) ~[mysql-connector-java-5.1.44.jar!/:5.1.44]
Итак, я использую одного и того же пользователя для MySQL Workbench и Heroku, но доступ запрещен для каждого "удаленного хоста", используемого в Heroku. Почему это происходит, даже если bf8f34598eb4cc @% имеет «Все привилегии», как показано ранее?
Любая помощь будет высоко оценена.
Спасибо!