Я получаю следующую ошибку:
Не удалось подключиться к базе данных: mysqlnd не может подключиться к MySQL 4.1+, используя старую небезопасную аутентификацию. Используйте инструмент администрирования для сброса пароля с помощью команды
SET PASSWORD = PASSWORD('your_existing_password')
.
- Кнопка увеличения значения
- Сложный SQL (возможно, внешние соединения)
- sql 'is not' (<>) не работает
- Синтаксис обновления MySQL с помощью скобок
- Как использовать метод пересечения массива для соответствия двум значениям в пределах 2 наборов массивов
Это сохранит новое и более безопасное хэш-значение в
mysql.user
. Если этот пользователь используется в других сценариях, выполняемых PHP 5.2 или ранее, вам может потребоваться удалить флаг старых паролей из файлаmy.cnf
Я использую PHP 5.3.8 и MySQL 5.5.16 на своей локальной машине, а мой хост (медиа-храм) работает под управлением PHP 5.3 MySQL 5.0.51a. Версия на реальном сервере старше, чем у моей машины.
Как исправить эту ошибку и подключиться к MySQL с моей локальной машины?
Я знаю, что есть похожие сообщения, но я все их пробовал, и никто не работает.
Перезапустите MySQL. Если вы этого не сделаете, MySQL будет использовать старый формат пароля, что означает, что вы не можете обновлять пароли с помощью встроенной функции хеширования PASSWORD ().
Хэши старого пароля – 16 символов, новые – 41 символ.
Подключитесь к базе данных и выполните следующий запрос:
SELECT user, Length(`Password`) FROM `mysql`.`user`;
Это покажет вам, какие пароли находятся в старом формате, например:
+ ---------- + -------------------- + | пользователь | Длина (`Пароль`) | + ---------- + -------------------- + | корень | 41 | | корень | 16 | | user2 | 16 | | user2 | 16 | + ---------- + -------------------- +
Обратите внимание, что каждый пользователь может иметь несколько строк (по одному для каждой отдельной спецификации узла).
Чтобы обновить пароль для каждого пользователя, выполните следующие действия:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
Наконец, привилегии flush:
FLUSH PRIVILEGES;
Источник: Как исправить «mysqlnd не может подключиться к MySQL 4.1+ с использованием старой проверки подлинности» на PHP5.3
У меня была проблема, когда старые пароли были разрешены сервером по умолчанию, поэтому простой SET PASSWORD FOR 'some-user' @ '%' = PASSWORD ('XXXX'); не будет работать (по причине старого программного обеспечения и наследия, с которыми я не пойду ….)
Решение :
SET old_passwords = 0; SET PASSWORD FOR 'some-user'@'%' = PASSWORD ('XXXX'); FLUSH PRIVILEGES;
Детали :
Выполнение этого как зарегистрированного пользователя
SET Password = PASSWORD('password')
Просто не работает
Например, здесь можно проверить
SHOW CREATE TABLE `mysql`.`user`;
Пароль не переключается с
| HOST | USER | PASS |
СТАРЫЙ ПАРОЛЬ
| % | some-user | 7fa559aa33d844b4 |
ЧТО Я ХОЧУ, ЭГ НОВЫЙ ПАРОЛЬ
| % | some-user | *CF04AECA892176E6C0C8206F965C03374D12F93E |
Поэтому я просмотрел переменные для старых паролей
SHOW VARIABLES; ... old_passwords = ON ...
Так что в основном мне пришлось установить mysql-сервер var first на old_password = OFF, например, это сработало для меня
SET old_passwords = 0; SET PASSWORD FOR 'some-user'@'%' = PASSWORD ('XXXX'); FLUSH PRIVILEGES;
У меня была та же проблема, которая пыталась подключиться к mediatemple external-db через IIS на моей локальной машине Windows. Обновление моего пароля для конкретного пользователя db решило проблему подключения к базе данных.
В центре (mt) Account Center просто обновите пароль. Я использовал один и тот же пароль, и он решил все мои проблемы.
Настройте целевой сервер Mysql, чтобы разрешить старую небезопасную аутентификацию.
http://dev.mysql.com/doc/refman/5.0/en/server-options.html#option_mysqld_old-passwords
Просто в файле my.cnf на целевом сервере Mysqld закомментируйте old_passwords.
Возможно, есть способ получить сборку PHP (или создать ее самостоятельно), которая использует совместимый (старый) режим auth.
Я впервые столкнулся с этой ошибкой с db Media Temple на сетевом сервере.
Проблема была вызвана тем, что я использовал пароль для пользователя базы данных, который все еще находился в своем старом формате пароля. Новый формат требует более 10 символов, специальных символов, номера и т. Д. …
Я создал новый пользователь базы данных и пароль в новом формате, и он работал нормально.
У меня была эта проблема, когда я импортировал базу данных из старой версии MySQL. Самая большая проблема – это мешало мне подключиться к MySQL с моим пользователем root, поэтому мне пришлось reset the root password
, выполнив следующие инструкции:
После этого я смог применить исправление, данное выше.
Например:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');