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.

Luckily, phpMyAdmin has a built-in "Change Password" feature.

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

MySQL 4.1+ MySQL 4.0 compatible

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

The profile has been updated. SET PASSWORD = PASSWORD( '***' )

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

<code>SELECT @@global.old_passwords, @@session.old_passwords, Length(PASSWORD('abc'));
</code>

Он говорит мне, что длина пароля все еще 16. Вывод:

<code>1     1     16
</code>

And so the problem persists.

Could not connect to database. SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file

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

<code>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
</code>

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

Database Owner
When you create a new database, you need to specify a Database Owner (DBO) User, which will have
full administrator access to the database.

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

Ответы на вопрос(3)

Ваш ответ на вопрос