У меня есть конфигурация mySQL / PHP, которую я использовал в нескольких системах. Я недавно обновил свою систему до Max OSX 10.6, и теперь она не может подключиться. Я получаю сообщение об ошибке:
mysqlnd не может подключиться к MySQL 4.1+ с использованием старой аутентификации
Я выполнил очевидный поиск в Google, но большинство из них, похоже, посвящено тому, как заставить mysql использовать старый стиль пароля, который, похоже, больше не будет работать. В любом случае я хочу найти лучшее решение, которое позволит мне использовать новый стиль пароля.
Я создаю свой пароль с помощью:
mysql> UPDATE mysql.user SET Password=PASSWORD('mypassword') WHERE User='root';
(или OLD_PASSWORD, это не имеет значения)
и я вхожу в базу данных с помощью:
@mysql_connect($mysqlserver,$username,$password)
where $username is root and $password="mypassword"
Каково ПРАВИЛЬНОЕ решение этой проблемы, поскольку принуждение к использованию старой технологии паролей явно НЕ правильное решение ...
О, я идиот. когда я вручную переустановил пароль root с помощью PASSWORD («пароль»), я не переустанавливал пароль USERS таким же образом, поэтому пароль пользователя все еще был OLD_PASSWORD («пароль»), а наш PHP входит в систему как пользователь, а не root (что, я полагаю, хорошо).
Я вручную переустановил пароль пользователя с PASWORD ("пароль"), и все вроде работает ...
После ручной игры с этими таблицами убедитесь, что вы выполнили FLUSH PRIVILEGES, чтобы MySQL прочитал новые значения.
В общем лучше использовать УСТАНОВКА ПАРОЛЯ для изменения пароля, поскольку это проверяет допустимые значения таблицы. Ручным способом вы легко можете внести неверные данные в пользовательские таблицы.
Попробуйте включить old_passwords = true
в my.cnf
. Должно помочь;)
Когда вы сбрасываете пароль, запускаете ли вы mysql в безопасном режиме? Я знаю, что иногда mysql очень привередлив в сбросе пароля root. Попробуйте этот пост, если вы еще не ... как ковать