mysql_connect () : 서버가 클라이언트 [mysql_old_password]에서 알 수없는 인증 방법을 요청했습니다.


8

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를 사용할 때 정상적으로 작동합니다. 이 문제의 원인에 대한 아이디어가 있습니까?


다른 질문 에서이 답변을 참조하십시오 : stackoverflow.com/a/50776838/1041047
Robin Qiu

답변:


10

이것을 읽어보십시오 : 링크

MySQL은 (내 생각에) 버전 4.1에서 더 긴 암호 해시를 도입했으며 서버는 여전히 그것을 사용합니다 (mysql 사용자 테이블에서 16 바이트 암호 해시를 확인하십시오). 최신 버전은 더 긴 비밀번호 해시를 사용합니다. 귀하의 서버는 두 가지를 모두 지원하지만 클라이언트 (php)는이 버전의 새로운 서버 만 지원하는 것 같습니다.

가능하면 첫 번째 줄의 링크에서 솔루션을 사용하고 새 해시로 암호를 다시 설정하십시오. 그러나 이전 암호를 사용하는 다른 (오래된) 클라이언트를 사용하는 경우 호환성이 손상 될 수 있습니다. 또한 PHP에서 MySQL에 대한 이전 암호 지원을 찾아보십시오.하지만 확실하지 않습니다.



3

나는 이것이 오래된 주제라는 것을 알고 있지만, 업그레이드하거나 다운 그레이드 할 필요 없이이 문제를 해결했습니다. 기본적으로 나는 my.cnf 파일에서 old_passwords = 1 행을 주석 처리하고 mysql을 다시 시작하고 결국 16 바이트 해시를 얻은 사용자를 추가 / 수정 한 다음 되돌아 가서 old_passwords = 1 행의 주석을 해제하고 mysql을 다시 시작했습니다. 그래서 기본적으로:

  • 댓글 old_passwords = 1
  • MySQL을 다시 시작
  • 사용자 추가 / 수정
  • 주석 제거 old_passwords = 1
  • MySQL을 다시 시작

그래서 당신은 그것을 가지고 있습니다 : 1 명의 사용자는 새로운 암호 유형을 사용하고 다른 사용자는 이전 암호 유형을 사용합니다. 그리고 모두가 로그인 할 수 있습니다! ;)


1

MYSQL 서버가 이전 비밀번호 해시를 사용하는 경우 여러 번 이런 일이 발생할 수 있습니다. 비밀번호 를 변경하거나 인증 문제를 해결하는 최신 비밀번호 해시를 얻기 위해 서버를 업그레이드하십시오.


1
MySql이 새 해시를 사용한다고 가정하여 db 사용자의 비밀번호를 다시 변경했습니다. 효과가있었습니다. 다른 변경은 필요하지 않았습니다.
eyal_katz

0

미디어 위키 설치를 업그레이드 할 때 비슷한 메시지가 나타납니다. Netfirms를 호스팅 제공 업체로 사용하고 있으며 제어판에 로그인하고 MySQL 영역으로 이동하여 mediawiki가 사용하는 데이터베이스를 변경 하여이 문제를 해결했습니다. 그런 다음 미디어 위키 업그레이드를 진행할 수있었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.