От Heroku (Spring Boot App) невозможно достичь MySQL: пользователю запрещен доступ (с помощью пароля: ДА) - PullRequest
0 голосов
/ 10 марта 2020

Я использую 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 @% имеет «Все привилегии», как показано ранее?

Любая помощь будет высоко оценена.

Спасибо!

...