Google Cloud SQL не позволяет мне загружать вывод консоли. Разрешение на вывод не разрешено, и mysql -u root не работает - PullRequest
0 голосов
/ 13 марта 2019

Использование: MySQL 5.7

Чего я хочу добиться:

Чтобы сохранить вывод консоли Cloud SQL в виде текста.

Ошибка:

Cloud SQL возвращает это: ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

То, что я пробовал:

  • Вход в систему без пароля → запрос пароля в любом случае, и любой пароль, включая пароль самого сервера, не работает.
  • Создание разных пользователей с паролем → один и тот же результат ошибки
  • Создание экземпляра Cloud SQL с skip-grant-tables, чтобы не требовалось разрешение на изменение таблицы → Cloud SQL не поддерживает этот флаг

Я попытался вручную пометить базу данных с помощью этой опции, но Cloud Shell даже не поддерживает root-вход без пароля.

Возможное решение:

Если я могу:mysql -u root с облачным SQL без пароля, тогда это должно быть в состоянии сделать это просто отлично.Кажется, что любой пользователь, кроме root, не может даже войти в экземпляр.

Заранее спасибо.Любые подсказки / помощь приветствуется.

1 Ответ

0 голосов
/ 15 марта 2019

Я считаю, что наиболее тривиальным решением является использование Google Cloud SDK со следующей командой .

Вы экспортируете результаты запроса в формате CSV в корзину Google Cloud Storage и скопируете их из корзины в свою систему. Затем вам придется проанализировать файл CSV, что является стандартной процедурой.

Здесь есть руководство здесь , и вы можете взглянуть на конкретный пример ниже:

Есть некоторые переменные, которые будут использоваться в нескольких командах

INSTANCE_ID=your_cloud_sql_instance_id
BUCKET=gs://your_bucket here

Создайте ведро, если у вас его нет, выбрав соответствующее местоположение

gsutil mb -l EU -p $DEVSHELL_PROJECT_ID $BUCKET

Вы можете прочитать объяснение следующих команд в документации 2 , но в конце в конце будет файл csv в вашей файловой системе. Также не забудьте отредактировать имя переменной DATABASE ниже, а также соответствующий запрос.

gsutil acl ch -u `gcloud sql instances describe $INSTANCE_ID --format json | jq -c ".serviceAccountEmailAddress" | cut -d \" -f 2`:W $BUCKET

DATABASE=db_visit

FILENAME=$DATABASE'_'`date +%Y%m%d%H%M%Y`_query.csv

gcloud beta sql export csv $INSTANCE_ID $BUCKET/$FILENAME --database=$DATABASE --query="select * from visit"

gsutil cp $BUCKET/$FILENAME .

Чтобы автоматизировать вход в систему через клиент MySQL, а также делать последующие запросы и получать его вывод, я призываю вас найти решение в духе pexpect .

...