Подключение App Engine к облаку SQL Доступ запрещен - PullRequest
2 голосов
/ 14 февраля 2020

Я пытаюсь заставить мой проект Flask App Engine читать данные, хранящиеся в базе данных Cloud SQL MySQL 5.7. Что-то пошло не так, как все, что я получил, это pymysql.err.OperationalError. Я следовал инструкциям здесь: https://cloud.google.com/sql/docs/mysql/connect-app-engine.

  1. Облачный SQL Admin API включен.

  2. Согласно связанному документу:

    App Engine использует служебную учетную запись для авторизации ваших подключений к облаку SQL. Эта учетная запись службы должна иметь правильные разрешения IAM для успешного подключения. Если не указано иное, учетная запись службы по умолчанию имеет формат service-PROJECT_NUMBER@gae-api-prod.google.com.iam.gserviceaccount.com.

На странице IAM, в которой перечислены разрешения для моего проекта, нет члена в указанном формате. «Учетная запись службы App Engine по умолчанию» имеет формат: my-project-name@appspot.gserviceaccount.com. Эта учетная запись службы имеет облачные SQL Роли клиента и редактора.

Пока мои запросы не выполняются, после каждой попытки я отмечаю в Logs Viewer: 7183 [Note] Access denied for user 'www-data'@'cloudsqlproxy~xxx.xxx.xx.xx' (using password: YES) (IP-адрес отредактирован). Это несколько сбивает с толку, поскольку 'www-data' не тот пользователь, которого я указал в своем коде.

Код, используемый для подключения:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://' + ':' + db_user + '@/' + db_name + '?unix_socket=/cloudsql/' + connection_name

Где я ошибся и как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Эта ошибка является ошибкой mySQL при попытке подключения к базе данных с неверными учетными данными.

Убедитесь, что вы используете правильные значения.

Если вы не Запомните имя пользователя базы данных и пароль, вы можете изменить его на консоли, выполнив следующие шаги, которые также расшифрованы здесь

  • Go на Облако SQL console
  • Выберите базу данных
  • Go для пользователей
  • рядом с пользователем выберите три точки
  • и выберите Изменить пароль
  • Введите новый пароль и нажмите ОК
0 голосов
/ 14 февраля 2020

Скорее всего, вы создаете и тестируете свое приложение локально, где вы предоставляете свои учетные данные с именем пользователя, имеющим доступ к Cloud SQL. При сборке, если не указано иное, имя экземпляра ядра приложения будет назначено по умолчанию.

Чтобы исправить это:

  1. Перейдите на IAM & admin
  2. Поиск учетной записи механизма приложения - -> заканчивающийся gae-api-prod.google.com.iam.gserviceaccount.com
  3. Изменить
  4. Назначить разрешение Облако SQL Клиент

Позвольте мне знать, если это решит это для вас!

...