PHP 5.4 PDO не мог подключиться к MySQL 4.1+, используя старую небезопасную аутентификацию.

Я знаю, что есть масса подобных вопросов, на самом деле я прочитал все (9 )из них.

Однако ни один из них не решает мою проблему.

У меня общий -пакет хостинга (минимальный ). В мой пакет включено доменное имя и отдельный IP-адрес, на котором размещен сервер MySQL. Для разработки я использую http://localhost/с сервером разработки PHP 5.4, и я использую сервер MySQL, который входит в пакет хостинга.

Проблема возникает только на моем ПК, потому что я установил PHP 5.4, но мой веб-хост установил PHP 5.2.17 и не хочет обновляться. Сервер MySQL находится на MySQL 5.1.50.

К счастью, phpMyAdmin имеет встроенную -функцию «Изменить пароль».

В phpMyAdmin есть две опции хеширования для смены пароля:

  • MySQL 4.1+
  • Совместимость с MySQL 4.0

Я изменил пароль с помощью опции MySQL 4.1+, и это подтвердило, что обновление прошло успешно.

Профиль обновлен.SET PASSWORD = PASSWORD( '***' )

Однако, когда я выполняю этот запрос,:

SELECT @@global.old_passwords, @@session.old_passwords, Length(PASSWORD('abc'));

мне сообщается, что длина пароля по-прежнему равна 16. Вывод:

1     1     16

Таким образом, проблема сохраняется.

Не удалось подключиться к базе данных. SQLSTATE[HY000] [2000] mysqlnd не может подключиться к MySQL 4.1+, используя старую небезопасную аутентификацию. Используйте инструмент администрирования для сброса пароля с помощью команды SET PASSWORD = PASSWORD ('ваш _существующий _пароль' ). Это сохранит новое и более безопасное хеш-значение в mysql.user. Если этот пользователь используется в других сценариях, выполняемых PHP 5.2 или более ранней версии, вам может потребоваться удалить флаг старых паролей -из файла my.cnf

. Я также пытался выполнить эти запросы,при входе в систему с пользователем DBO в phpMyAdmin:

SET SESSION old_passwords=0; 
[phpMyAdmin reloads to the home screen, but the value remains = 1]

SET GLOBAL old_passwords = 0;
#1227 - Access denied; you need the SUPER privilege for this operation

FLUSH PRIVILEGES;
#1227 - Access denied; you need the RELOAD privilege for this operation

Это противоречит тому, что указано в меню веб-хостинга для настройки пользователя DBO:

Владелец базы данных
При создании новой базы данных необходимо указать владельца базы данных (пользователя DBO ), который будет иметь
полный доступ администратора к базе данных.

Это что-то, что я должен обсудить с моими веб-хостами? Или это может решить мой пользователь DBO? В противном случае это можно обойти в PHP? (поскольку он работает с PHP 5.2.17, но не с PHP 5.4)

11
задан hakre 27 April 2013 в 22:56
поделиться