mysql_connect (): сервер запросил неизвестный клиенту метод аутентификации [mysql_old_password] в

8

Я пытаюсь запустить PHP 5.4.1 (скомпилирован из исходного кода), но когда я пытаюсь подключиться к MySQL, я получаю:

Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in

При использовании PHP 5.3 / 5.2 все работает нормально. Есть идеи, что вызывает эту проблему?

Фернандо
источник
См. Этот ответ в другом вопросе: stackoverflow.com/a/50776838/1041047
Робин Цю

Ответы:

10

Попробуйте прочитать это: ссылка

MySQL ввел более длинные хэши паролей в (я думаю) версии 4.1, и ваш сервер, вероятно, все еще использует их (проверьте наличие 16-байтовых хэшей паролей в вашей пользовательской таблице mysql). Более новые версии используют более длинные хэши паролей. Ваш сервер поддерживает оба, но ваш клиент (php) поддерживает только новые в этой версии (и вкл).

Если это возможно, используйте решение по ссылке в первой строке и установите новый пароль с новым хешем, но будьте осторожны, если вы используете любые другие (старые) клиенты, которые используют старые пароли, совместимость может нарушиться. Также попробуйте поискать поддержку старых паролей для MySQL в PHP, но я не уверен в этом.

mulaz
источник
9
ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';
Робин Цю
источник
Этот ответ решил эту проблему для меня serverfault.com/questions/295285/…
Вишрант
3

Я знаю, что это старая тема, но я решил эту проблему без необходимости что-либо обновлять / понижать. В основном я закомментировал строку old_passwords = 1 в моем файле my.cnf, перезапустил mysql, добавил / изменил пользователя, который в итоге получил 16-байтовый хэш, затем вернулся и раскомментировал строку old_passwords = 1 и перезапустил mysql. Итак, в основном:

  • комментарий old_passwords = 1
  • перезапустите MySQL
  • добавить / изменить пользователя
  • раскомментируйте old_passwords = 1
  • перезапустите MySQL

Итак, у вас есть: 1 пользователь использует новый тип пароля, в то время как другие пользователи имеют свои старые типы паролей. И каждый может войти! ;)

Petru
источник
1

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

Клэйн Дсилва
источник
1
Я просто снова изменил пароль пользователя БД, предполагая, что MySql будет использовать новый хеш. Это сработало. Никаких других изменений не требовалось.
eyal_katz
0

У меня было похожее сообщение при попытке обновить мою установку MediaWiki. Я использую Netfirms в качестве своего хостинг-провайдера, и я решил эту проблему, войдя в панель управления, перейдя в область MySQL и изменив базу данных, которую использовал mediawiki. Затем я смог продолжить обновление MediaWiki.

jedi34567
источник