MySql: ОШИБКА 1045 (28000): доступ запрещен для пользователя, использующего пароль, ДА, используя cloud_sql_proxy - PullRequest
0 голосов
/ 18 апреля 2020

Мне нужно выполнить файл sql с помощью клиента mysql в сценарии python (я не могу выполнить запросы с использованием модуля python mysql), база данных является экземпляром MySQL в GCloud я подключаюсь к этому экземпляру, используя cloud_sql_proxy.

Я запустил my_sql_proxy, используя tcp, вот так:

./cloud_sql_proxy -instances=<my_instance>=tcp:12367

И я пытаюсь выполнить sql скрипт выглядит так:

 gunzip -c <filename>.sql.gz 2>&1 | mysql --host=127.0.0.1 --port=12367 --user=<user> --password=<password> <dbmane>

Это приводит к следующей ошибке:

ERROR 1045 (28000): Access denied for user '<myuser>'@'cloudsqlproxy~<some ip>' (using password: YES)

Я, очевидно, проверил правильность имени пользователя / pwd / instance.

Та же команда указывает к mysql экземпляру, фактически размещенному на localhost, работает.

При том же запущенном процессе cloud_sql_proxy я могу подключиться с помощью Sequel Pro клиента с той же информацией аутентификации, и я могу подключиться к дБ с помощью следующей команды:

/rnd/pos/components/mysql --host=127.0.0.1 --port=12367 --user=<myuser> -p <dbname>
>>> Enter password:
>>> Welcome to the MySQL monitor.  Commands....

При подключении это вывод (в маске) ​​SELECT USER(), CURRENT_USER();

+--------------------------------------------+-------------------------------------------------+
| USER()                                     | CURRENT_USER()                                  |
+--------------------------------------------+-------------------------------------------------+
| <my user>@cloudsqlproxy~<same ip as above> | <my user>@cloudsqlproxy~<part of the same ip>.% |
+--------------------------------------------+-------------------------------------------------+

Я пробовал с -p[password] и --password[=password], то же самое вывод.

Почему --password блокирует? Это cloud_sql_proxy конфиг? Или это MySQL настройка экземпляра? Я погуглил и переполнился стеком, но не могу найти ничего подходящего для моего случая.

1 Ответ

0 голосов
/ 23 апреля 2020

Я подозреваю, что mysql ищет сокет по умолчанию, в то время как cloud_sql_proxy явно использует TCP.

Я считаю, что добавление --protocol=TCP должно решить проблему. По крайней мере, мне помогло, когда я столкнулся с этим препятствием при тех же обстоятельствах.

...