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을 다시 시작했습니다. 그래서 기본적으로:
- 댓글 old_passwords = 1
- MySQL을 다시 시작
- 사용자 추가 / 수정
- 주석 제거 old_passwords = 1
- MySQL을 다시 시작
그래서 당신은 그것을 가지고 있습니다 : 1 명의 사용자는 새로운 암호 유형을 사용하고 다른 사용자는 이전 암호 유형을 사용합니다. 그리고 모두가 로그인 할 수 있습니다! 😉
답변
MYSQL 서버가 이전 비밀번호 해시를 사용하는 경우 여러 번 이런 일이 발생할 수 있습니다. 비밀번호 를 변경하거나 인증 문제를 해결하는 최신 비밀번호 해시를 얻기 위해 서버를 업그레이드하십시오.
답변
미디어 위키 설치를 업그레이드 할 때 비슷한 메시지가 나타납니다. Netfirms를 호스팅 제공 업체로 사용하고 있으며 제어판에 로그인하고 MySQL 영역으로 이동하여 mediawiki가 사용하는 데이터베이스를 변경 하여이 문제를 해결했습니다. 그런 다음 미디어 위키 업그레이드를 진행할 수있었습니다.