Отключено подключение с использованием старого (до 4.1.1) протокола аутентификации (включена опция "secure_auth" клиента) - программирование
Подтвердить что ты не робот

Отключено подключение с использованием старого (до 4.1.1) протокола аутентификации (включена опция "secure_auth" клиента)

У меня проблема при попытке подключиться к базе данных MySQL с помощью драйвера Windows OBDC. Есть много поисковых запросов относительно очевидных... люди используют старые версии, однако я не знаю.

mysqld находится на CentOS 6.4 32bit

./usr/libexec/mysqld  Ver 5.1.69 for redhat-linux-gnu on i386 (Source distribution)

enter image description here

Поэтому я не понимаю, откуда приходит протокол до 4.1.1. Любые идеи?

4b9b3361

Ответ 1

Я предполагаю, что если вы зададите правильный вопрос, вам будет легче найти ответ.

В этом случае "моя" проблема связана с тем, как пароли хэшируются и хранятся в базе данных. Унаследованные пароли были сохранены с более коротким хешем, который теперь устарел.

Несколько важных моментов:

mysql_upgrade не может и не обновляет пароли, и не предупреждает об этом в некоторых версиях, см. http://bugs.mysql.com/bug.php?id=65461.

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

Различные версии рассматривали ситуацию по-другому, поэтому вы можете сидеть на некоторых устаревших паролях в своей базе данных, а затем внезапно, без видимых причин, некоторые учетные записи перестают работать... это из-за того, как разные версии решили справиться с ситуацией.

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

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

Ответ 2

MySQL Workbench 6.08 в разделе "Управление подключениями к серверу", вкладке "Подключение", "Дополнительно", вы должны установить флажок " Использовать старый протокол проверки подлинности."

Ответ 4

Я столкнулся с этим, используя ODBC Connector для Windows, чтобы подключиться к серверу Percona 5.5. который отключен secure_auth.

Из того, что я нашел, соединитель ODBC, в отличие от MySql Workbench, не поддерживает возможность аутентификации логинов, которые используют старые 16-байтовые хэшированные пароли. В этом есть отчет об ошибке, но, похоже, цессионарий был/запутался в запросе функции (см. ошибка # 71234).

Мне удалось обновить логин mysql, чтобы использовать новый 41-байтовый хеш, используя следующие команды:

 set old_passwords=0;
 set password=password('yourpasswordhere');

Как я уже упоминал, наш сервер отключен secure_auth, который, как представляется, вызывает password() для возврата результатов old_password(). Выполнение set old_passwords=0; позволит методу password() генерировать новые 41-байтовые хэши (на протяжении всего сеанса).

Ответ 5

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

Ответ 6

Я нашел другое решение в случае, если кто-то ударит по этому - очень странно -

  • Установите 5.1-битный ODBC-драйвер 5.1 - убедитесь, что соединение ODBC само по себе работает, если вы можете подключиться, тогда вы сможете после # 2
  • Нажмите "Связанные серверы" - "Провайдеры" - щелкните правой кнопкой мыши по MSDASQL, нажмите "Свойства"
    • снимите флажок "Разрешить inprocess" - это хорошо, если вам не нужно вставлять поля TEXT и NTEXT.
  • Создайте соединение с подключенным сервером или проверьте тот, с которым вы сражались - lol

Когда я проверил "Разрешить inprocess", я все еще получил ошибку, хотя система DSN ODBC работала нормально. Я предполагаю, потому что у меня была смесь 5.2 (с серверами, которые работали нормально) и 5.1 для серверов, которые этого не сделали, SQL разделял процессы, потому что драйвер 5.1 не дает этой ошибки.

Ответ 7

Если вы не можете изменить свой сервер, возможно, вы можете изменить своего клиента: http://bugs.mysql.com/bug.php?id=75425