«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я получаю сообщение об ошибке «ОК-пакет на 6 байт короче, чем ожидалось» при подключении к удаленной базе данных MySQL с помощью PHP 5.3.0?

Почему я получаю сообщение об ошибке «ОК-пакет на 6 байт короче, чем ожидалось» при подключении к удаленной базе данных MySQL с помощью PHP 5.3.0?

Опубликовано 9 ноября 2024 г.
Просматривать:948

Why am I getting the \

Несовместимость MySQL с PHP: понимание ошибки подключения и ее решения

Обнаружение ошибки «ОК пакет на 6 байт короче, чем ожидалось» при подключении к удаленная база данных MySQL с PHP версии 5.3.0 может стать загадочной проблемой. Чтобы решить эту проблему, крайне важно понять основную причину и применить соответствующее решение.

Ошибка указывает на несовместимость между локальной версией PHP и удаленным сервером MySQL. Версии PHP 5.3.0 и выше требуют, чтобы пароли учетных записей MySQL были хешированы с использованием нового плагина аутентификации MySQL. Однако более старые версии MySQL, такие как 5.0.22, могут по-прежнему использовать старый метод аутентификации с 16-значными паролями. Это несоответствие приводит к ошибке, поскольку PHP 5.3.0 не может правильно интерпретировать ответ от сервера MySQL.

Для решения этой проблемы существует два возможных решения:

  • Установите новый пароль: Для учетной записи, в которой возникла ошибка, используйте клиент MySQL для выполнения команды «SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')" для создания нового хешированного пароля. Это обновит пароль учетной записи в новом формате аутентификации.
  • Настройте сервер MySQL: Альтернативно вы можете проверить, настроен ли сервер MySQL на использование старого метода аутентификации по умолчанию. Если да, вы можете изменить настройки сервера, чтобы применить новый плагин аутентификации и запретить старые пароли.

Чтобы определить, использует ли учетная запись старый 16-значный пароль, выполните запрос:

SELECT
  Length(`Password`),
  Substring(`Password`, 1, 1)
FROM
  `mysql`.`user`
WHERE
  `user`='username'

На проблемном сервере 5.0.22 замена 'username' на соответствующую учетную запись. Если в результате длина пароля равна 16, а первым символом является шестнадцатеричная цифра (0–9 или A–F), это указывает на старый пароль.

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3