PHP 5.4.1 (소스에서 컴파일)을 실행하려고하는데 mysql에 연결하려고하면 다음과 같이됩니다.
Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in
PHP 5.3 / 5.2를 사용할 때 정상적으로 작동합니다. 이 문제의 원인에 대한 아이디어가 있습니까?
PHP 5.4.1 (소스에서 컴파일)을 실행하려고하는데 mysql에 연결하려고하면 다음과 같이됩니다.
Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in
PHP 5.3 / 5.2를 사용할 때 정상적으로 작동합니다. 이 문제의 원인에 대한 아이디어가 있습니까?
답변:
이것을 읽어보십시오 : 링크
MySQL은 (내 생각에) 버전 4.1에서 더 긴 암호 해시를 도입했으며 서버는 여전히 그것을 사용합니다 (mysql 사용자 테이블에서 16 바이트 암호 해시를 확인하십시오). 최신 버전은 더 긴 비밀번호 해시를 사용합니다. 귀하의 서버는 두 가지를 모두 지원하지만 클라이언트 (php)는이 버전의 새로운 서버 만 지원하는 것 같습니다.
가능하면 첫 번째 줄의 링크에서 솔루션을 사용하고 새 해시로 암호를 다시 설정하십시오. 그러나 이전 암호를 사용하는 다른 (오래된) 클라이언트를 사용하는 경우 호환성이 손상 될 수 있습니다. 또한 PHP에서 MySQL에 대한 이전 암호 지원을 찾아보십시오.하지만 확실하지 않습니다.
ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';
나는 이것이 오래된 주제라는 것을 알고 있지만, 업그레이드하거나 다운 그레이드 할 필요 없이이 문제를 해결했습니다. 기본적으로 나는 my.cnf 파일에서 old_passwords = 1 행을 주석 처리하고 mysql을 다시 시작하고 결국 16 바이트 해시를 얻은 사용자를 추가 / 수정 한 다음 되돌아 가서 old_passwords = 1 행의 주석을 해제하고 mysql을 다시 시작했습니다. 그래서 기본적으로:
그래서 당신은 그것을 가지고 있습니다 : 1 명의 사용자는 새로운 암호 유형을 사용하고 다른 사용자는 이전 암호 유형을 사용합니다. 그리고 모두가 로그인 할 수 있습니다! ;)