MySQL Утилиты с Сервером MySQL 8 - PullRequest
0 голосов
/ 01 ноября 2018

Как часть нашего процесса сборки, мы используем утилиту mysqldiff (вызванную из maven) для проверки наших сценариев миграции базы данных, сравнивая только что созданную копию схемы с версией схемы, созданной из базовой линии, плюс нашу Скрипт миграции. Это все прекрасно работает с MySQL 5.7.

Мы ожидаем обновления до MySQL 8.0.13. Пользователь базы данных настроен на использование mysql_native_password. Когда мы запускаем нашу сборку, мы получаем эту ошибку от mysqldiff:

ERROR: Authentication plugin 'caching_sha2_password' is not supported

Мы понимаем, что эта ошибка связана с тем, что утилита использует старую версию mysql-python-connector. Мы также понимаем, что ответ может быть таким же простым, как обновление версии соединителя, но мы не знаем, как это сделать.

Утилиты MySQL можно найти по адресу https://github.com/mysql/mysql-utilities.

В Windows 10 мы устанавливаем с помощью установщика Oracle для Windows. В Amazon Linux мы устанавливаем с yum.

Примечание:

  1. Утилиты MySQL, по-видимому, основаны на встроенной установке python2.7 (у нас нет автономного python, установленного ни на одной из машин разработки или сборки).
  2. У нас нет опыта работы с Python, поэтому подробные шаги будут полезны, если мы будем работать со встроенным Python.
  3. Нам нужно решить эту проблему как в Windows 10, так и в Amazon Linux.

Как обойти эту ошибку, чтобы мы могли использовать mysqldiff с сервером MySQL 8.0.13 в Windows 10 и Amazon Linux?

Если ответ просто обновить разъем, каковы подробные шаги для этого?

Есть ли какие-либо изменения в установке / конфигурации сервера, которые мы можем внести для поддержки клиентов, подключающихся со старыми драйверами?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Я столкнулся с той же проблемой и посмотрел код коннектора Python mysql и добавил класс для caching_sha2_password. У меня сейчас работает.

1. Чтобы решить эту проблему, загрузите исходный код mysql-python-connector с официального сайта Mysql, затем установите python (любая версия).

2. распакуйте загруженный zip-файл mysql-python-connector, и внутри вы найдете файл setup.py

3. Откройте терминал и введите python setup.py install

4. папка сборки будет создана в текущей папке. Перейдите в build / mysql / и скопируйте файл authentication.py

5. Откройте утилиты Mysql - >> bin - >> library.zip, найдите файл соединителя mysql-> mysql> authentication.pyc, удалите файл i и вставьте файл authentication.py, который вы скопировали ранее.

6. СОВЕРШЕНО!

Если вы не хотите с ним связываться, вы можете скачать готовые файлы по этой ссылке

Вот ссылка на файлы и пояснения.

https://github.com/rgaraisayev/mysqldiff

0 голосов
/ 10 ноября 2018

Мне удалось запустить mysqldiff.py против mysql 8 с некоторыми исправлениями :

клонируйте пропатченный исходный код и введите его каталог:

$ git clone https://github.com/georgexsh/mysql-utilities.git

создайте virtualenv и активируйте его:

$ virtualenv -p python2 venv
$ . venv/bin/activate

установить более новый соединитель mysql:

(venv) $ pip install mysql-connector-python>=8.0

установить утилиты mysql для текущего virtualenv:

(venv) $ pip install .

Теперь mysqldiff.py может работать. если вы хотите запустить без активации virtualenv, вы используете полный путь:

/path/to/mysql-utilities/venv/bin/mysqldiff.py

шаги под окнами в основном те же, за исключением активации virtualenv:

venv\Scripts\activate.bat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...