"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que estou recebendo o erro "OK pacote 6 bytes menor que o esperado" ao me conectar a um banco de dados MySQL remoto com PHP 5.3.0?

Por que estou recebendo o erro "OK pacote 6 bytes menor que o esperado" ao me conectar a um banco de dados MySQL remoto com PHP 5.3.0?

Publicado em 2024-11-09
Navegar:557

Why am I getting the \

Incompatibilidade com MySQL PHP: Compreendendo o erro e a resolução de conexão

Encontrando o erro "Pacote OK 6 bytes menor que o esperado" ao conectar-se a um banco de dados MySQL remoto com PHP versão 5.3.0 pode ser um problema intrigante. Para resolver este problema, é crucial compreender a causa subjacente e aplicar a solução apropriada.

O erro aponta para uma incompatibilidade entre a versão local do PHP e o servidor MySQL remoto. As versões 5.3.0 e superiores do PHP exigem que as contas MySQL tenham senhas com hash usando o novo plugin de autenticação MySQL. No entanto, versões mais antigas do MySQL, como 5.0.22, ainda podem usar o antigo método de autenticação com senhas de 16 caracteres. Essa discrepância leva ao erro, pois o PHP 5.3.0 não consegue interpretar a resposta do servidor MySQL corretamente.

Para resolver esse problema, existem duas soluções possíveis:

  • Defina uma nova senha: Para a conta que apresenta o erro, use um cliente MySQL para executar o comando "SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')" para gerar uma nova senha com hash. Isso atualizará a senha da conta para o novo formato de autenticação.
  • Configure o servidor MySQL: Como alternativa, você pode verificar se o servidor MySQL está configurado para usar o método de autenticação antigo por padrão. Nesse caso, você pode modificar as configurações do servidor para aplicar o novo plug-in de autenticação e proibir senhas antigas.

Para determinar se a conta está usando uma senha antiga de 16 caracteres, execute a consulta:

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

No servidor 5.0.22 problemático, substituindo 'username' pela conta em questão. Se o resultado mostrar um comprimento de senha de 16 e o ​​primeiro caractere for um dígito hexadecimal (0-9 ou AF), isso indica uma senha antiga.

Ao compreender a causa subjacente e aplicar a solução apropriada, você pode resolva a incompatibilidade do MySQL PHP e estabeleça uma conexão bem-sucedida com o banco de dados remoto.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3