Почему я не могу подключиться к общему серверу MySQL 5.3.36, используя mysqli_connect и PHP 7.4, но он будет работать, используя php 7.1?

У меня есть эта общая учетная запись на 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. Это быстрое решение, но оно не будет работать после того, как они удалят его через месяц. Я также мог бы переместить сайт в другое место или использовать удаленную базу данных, но кто-нибудь знает реальный способ исправить эту ошибку и заставить все там работать?

Этот пост от декабря 2019, кажется, описывает ту же проблему. Ответ дан там (для MySQL 8.0).
Luuk 21.12.2020 08:03

Включите правильную отчетность об ошибках. Вы должны увидеть дополнительное предупреждение, в котором будет указано, какой метод аутентификации был запрошен. Исходя из этого, вы должны искать решение. См. Как получить сообщение об ошибке в MySQLi?

Dharman 21.12.2020 16:26

Можете ли вы также указать, какую именно версию PHP вы используете?

Dharman 21.12.2020 16:32

@Dharman Точная версия PHP — 7.4.137.4.13. Я попытался подключиться к MySQL в терминале. Я могу открыть сеанс, но это доступ в тюрьму. Я не могу изменить root.

Jeff 22.12.2020 06:44

@Luuk Если я использую mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); до mysqli_connect, это ничего не даст. Если я использую mysqli_connect_errno и mysqli_connect_error, я получаю 2054 и сообщение об ошибке выше.

Jeff 22.12.2020 06:49

Попробуйте это: dba.stackexchange.com/questions/33447/…

Luuk 22.12.2020 08:22

Это звучит неправильно. Это может быть ошибка. Не могли бы вы сообщить нам, какой метод аутентификации был запрошен? Проверьте свои журналы ошибок, возможно, там есть более подробная информация.

Dharman 22.12.2020 14:15
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout.
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout.
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для...
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
0
7
135
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После использования mysql в терминале я просмотрел свои пользовательские пароли и получил сообщение об ошибке «пароль должен состоять из 41-символьного хеша». Я просто изменил свои пароли, и теперь это работает. Кажется, что-то изменилось в том, как хранятся пароли, или ошибка была исправлена. Спасибо.

Другие вопросы по теме