Я только что обновил PHP своего разработчика до последней версии, 5.4.5. Эта машина для разработки подключается к удаленному серверу MySQL , расположенному на общем сервере , который я арендую у хостинговой компании.

Попытка подключиться к моему удаленному серверу MySQL с помощью простого mysql_connect('myserver.com', 'user', 'password') приводит к следующей ошибке:

Предупреждение: mysql_connect (): mysqlnd не может подключиться к MySQL 4.1+, используя старую небезопасную аутентификацию. Используйте инструмент администрирования для сброса пароля с помощью команды SET PASSWORD = PASSWORD ('your_existing_password'). Это сохранит новое и более безопасное значение хеш-функции в mysql.user. Если этот пользователь используется в других скриптах, выполняемых PHP 5.2 или более ранней версией, вам может потребоваться удалить флаг старых паролей из вашего файла my.cnf в file.php в строке 2.

Просто, как рекомендовано, просто выполните:

SET PASSWORD = PASSWORD('my-password');

Ничего бы не изменил. То же самое касается выполнения

SET SESSION old_passwords=FALSE;

После небольшого поиска я понял, что мне нужен довольно глубокий доступ к серверу MySQL, чтобы решить эту проблему , которого у меня нет. Попытка выполнить этот запрос:

UPDATE mysql.user SET Password=PASSWORD('my-password')
  WHERE User='my_user' AND Host='my-server';
FLUSH PRIVILEGES;

Просто выдает мне следующую ошибку:

1142 - команда UPDATE отклонена для пользователя u0112918'@'www10.aname.net 'для таблицы' user '

Запросы на то, чтобы компания выполнила запрос за меня, пока не увенчались успехом. Итак, у меня вопрос: есть ли способ исправить это на стороне клиента, не задействуя сервер MySQL?

0
Zar 2 Авг 2012 в 19:17

1 ответ

Лучший ответ

Хм, попробуйте выполнить следующий запрос с помощью инструмента, отличного от PhpMyAdmin , например Mysql Workbench, или через оболочку:

SET SESSION old_passwords=0; 
SET PASSWORD = PASSWORD('passwordString');

Вам должно быть разрешено изменять свой собственный пароль без прав DML для пользовательской таблицы.

Изменить: поскольку это не решило проблему - когда для базы данных включен "read_only", вам нужны супер-права для изменения (даже вашего собственного) пароля (http://dev.mysql.com/doc/refman/5.5/en/set-password.html)

1
Najzero 2 Авг 2012 в 19:36
Выполнение этого запроса, однако, по-прежнему дает мне ту же ошибку .. Супер странно.
 – 
Zar
2 Авг 2012 в 19:27
Извините, вы не можете использовать какие-либо обновления / вставки в базу данных с этим пользователем? Взято из руководства mysql: Оператор SET PASSWORD назначает пароль существующей учетной записи пользователя MySQL. Когда включена системная переменная read_only, для использования SET PASSWORD требуется привилегия SUPER в дополнение к любым другим привилегиям, которые могут потребоваться.
 – 
Najzero
2 Авг 2012 в 19:32
Выполнение команды через рабочую среду MySQL помогло, понятия не имею, почему это так. Я немного отредактирую ваш ответ и помечу его как отвеченный. Большое спасибо за вашу помощь!
 – 
Zar
2 Авг 2012 в 19:33