У меня есть эта общая учетная запись на Hostgator. Используя PHP 7.1 и mysqli_connect, у меня нет проблем с подключением к базе данных MySQL 5.3.36. PHP-скрипт должен быть в порядке. Хостинговая компания прислала мне электронное письмо, в котором сообщила, что будет поддерживать PHP 7.4 и через месяц удалит все старые версии. Затем я переключил учетную запись на PHP 7.4. Блог Wordpress нуждался в некоторой настройке, но теперь он работает с PHP 7.4. Другая база данных, которую я использую для динамического каталога файлов, не будет подключаться с использованием PHP 7.4. Я получаю следующее сообщение об ошибке:
Сервер запросил метод аутентификации, неизвестный клиенту
Согласно моим поискам, кажется, что виновником является плагин аутентификации MySQL, и по этой причине MySQL не будет правильно обрабатывать пароль. Я бы попытался это исправить, но похоже, что я не могу изменить плагин (mysql_native_password) из своей учетной записи, а техподдержке принимающей компании наплевать на мою проблему. Их лучшим ответом было понизить версию PHP до 7.1. Это быстрое решение, но оно не будет работать после того, как они удалят его через месяц. Я также мог бы переместить сайт в другое место или использовать удаленную базу данных, но кто-нибудь знает реальный способ исправить эту ошибку и заставить все там работать?
Включите правильную отчетность об ошибках. Вы должны увидеть дополнительное предупреждение, в котором будет указано, какой метод аутентификации был запрошен. Исходя из этого, вы должны искать решение. См. Как получить сообщение об ошибке в MySQLi?
Можете ли вы также указать, какую именно версию PHP вы используете?
@Dharman Точная версия PHP — 7.4.137.4.13. Я попытался подключиться к MySQL в терминале. Я могу открыть сеанс, но это доступ в тюрьму. Я не могу изменить root.
@Luuk Если я использую mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); до mysqli_connect, это ничего не даст. Если я использую mysqli_connect_errno и mysqli_connect_error, я получаю 2054 и сообщение об ошибке выше.
Попробуйте это: dba.stackexchange.com/questions/33447/…
Это звучит неправильно. Это может быть ошибка. Не могли бы вы сообщить нам, какой метод аутентификации был запрошен? Проверьте свои журналы ошибок, возможно, там есть более подробная информация.
После использования mysql в терминале я просмотрел свои пользовательские пароли и получил сообщение об ошибке «пароль должен состоять из 41-символьного хеша». Я просто изменил свои пароли, и теперь это работает. Кажется, что-то изменилось в том, как хранятся пароли, или ошибка была исправлена. Спасибо.