2013-05-16 2 views
2

я получаю эту ошибку при подключении к базе данных MySQL:Использование подключения соединителя MySQL C++ отказался

Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled) 

Проблема, кажется, происходит с использованием различных версий libmysql.dll.

Я мог бы подключиться с использованием предыдущей версии, которую я получил от установки MySQL Community Server (5.6.0). Однако, когда я сам построил libmysql.lib и .dll, используя исходный код MySQL C/connector, соединение завершилось с ошибкой выше. Таким образом, это заставляет меня думать, что в исходном коде может быть настройка при создании DLL-файла, который я должен соблюдать для правильного подключения. Что это может быть?

+0

Какая у вас работающая версия сервера db? Это тот, который вы упоминаете в своем вопросе, или вы установили его только для получения источника соединителя? – didierc

ответ

2

Это не проблема с коннектором, а база данных одна: этот blog post покрывает ее. В основном, хэширование пароля изменилось с 4.1 на будущее, но старый метод поддерживался функцией OLD_PASSWORD для доступа к ней. Однако версия 5.6 решила просто отказаться от соединений, все еще основанных на этом методе аутентификации.

Так у вас есть 2 решения:

  1. В качестве первого шага, следует быстро и грязной работе вокруг намекала в документации MySQL, с помощью параметра запуска сервера --skip-secure-auth: это краткосрочное решение, чтобы получить ваши db-соединения снова работают после обновления сервера
  2. обновите содержимое своей базы данных, установив все пароли учетных записей с использованием старого метода шифрования, обновленного до нового: это предпочтительный метод, поскольку вы эффективно используете новое шифрование и избегайте небезопасной ситуации, которую все еще допускает вышеуказанный переключатель. Не забудьте удалить переключатель из первого решения после обновления вашего db.
Смежные вопросы