Client does no support authentication protocol requested by server, База даних MySQL, Нотатки,

Головна » Нотатки » База даних MySQL »Учасники не підтримують authentication protocol requested by server

Починаючи з версії 4.1, у My SQL використовується новий протокол автентифікації. У новому протоколі алгоритм хешування даних аутентифікації відрізняється від алгоритму попередніх версій сервера My SQL. По суті вся проблема зводиться до того, що хеш пароля «mypass» у версіях старше 4.1 (тобто 4.1.*, 5.0.* і т.д.) має вигляд *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 (рядок 41 "mypass" у версіях молодших 4.1. (тобто 4.0.*, 3.23.* і т.д.) має вигляд 6f8c114b58f2ce9e (рядок 16 байт)

Щоб вирішити проблему, можна піти по одному з наступних шляхів:

  1. Оновити всіх клієнтів (їхні бібліотеки) до версії 4.1.1 або більше. Цей варіант є ідеальним, але не завжди підходить, тому що не для всіх додатків існують відповідні оновлені бібліотеки.
  2. Створити для «старих» клієнтів облікові записи, які зберігають пароль у старому форматі.
  3. Для кожного облікового запису встановити хеш пароля у старому форматі. Це робиться за допомогою однієї з двох конструкцій:

Задати серверу у конфігураційному файлі (my.ini,my.cnf) директиву, яка вказує серверу використовувати старий алгоритм хешування пароля. Ця директива:

При цьому не забудьте, що Вам потрібно конвертувати хеші паролів з нового формату в старий формат. Це потрібно буде зробити для всіх облікових записів, у яких хеш пароля вже зберігається у новому форматі.

Для того, щоб вибрати користувачів, у яких хеші паролів зберігаються в новому форматі, потрібно написати запит виду:

Далі, для кожного користувача в отриманій таблиціви конвертуєте пароль будь-яким із варіантів, запропонованим пунктом вище.

Не забудьте, що таблиця mysql.user зберігає паролі хеші. Ці хеші отримані з допомогою алгоритмів незворотного шифрування. З цього випливає, що Ви ніколи не дізнаєтесь, який пароль був джерелом для даного хеша і Вам доведеться створювати нові паролі для облікових записів. Після створення паролів повідомте нові дані облікових записів усім користувачам цих облікових записів.

Рекомендовані до читання розділи документації: