>  기사  >  데이터 베이스  >  PHP 5.3.0을 사용하여 원격 MySQL 데이터베이스에 연결할 때 \"OK 패킷이 예상보다 6바이트 짧습니다\" 오류가 발생하는 이유는 무엇입니까?

PHP 5.3.0을 사용하여 원격 MySQL 데이터베이스에 연결할 때 \"OK 패킷이 예상보다 6바이트 짧습니다\" 오류가 발생하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-02 10:35:02131검색

Why am I getting the

MySQL PHP 비호환성: 연결 오류 및 해결 방법 이해

연결 시 "OK 패킷이 예상보다 6바이트 짧습니다." 오류 발생 PHP 버전 5.3.0을 사용하는 원격 MySQL 데이터베이스는 수수께끼 같은 문제가 될 수 있습니다. 이 문제를 해결하려면 근본적인 원인을 이해하고 적절한 솔루션을 적용하는 것이 중요합니다.

이 오류는 로컬 PHP 버전과 원격 MySQL 서버 간의 비호환성을 나타냅니다. PHP 버전 5.3.0 이상에서는 MySQL 계정에 새로운 MySQL 인증 플러그인을 사용하여 해시된 비밀번호가 있어야 합니다. 그러나 5.0.22와 같은 이전 MySQL 버전에서는 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 서버에서 '사용자 이름'을 해당 계정으로 바꾸세요. 결과에 따르면 비밀번호 길이가 16이고 첫 번째 문자가 16진수(0-9 또는 A-F)인 경우 이전 비밀번호를 나타냅니다.

근본 원인을 이해하고 적절한 해결 방법을 적용하면 다음과 같은 조치를 취할 수 있습니다. MySQL PHP 비호환성을 해결하고 원격 데이터베이스에 성공적으로 연결하십시오.

위 내용은 PHP 5.3.0을 사용하여 원격 MySQL 데이터베이스에 연결할 때 \"OK 패킷이 예상보다 6바이트 짧습니다\" 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.