본문 바로가기
MySql

MySQL 이전 인증을 사용하여 MySQL 4.1+에 연결할 수 없습니다.

by 베이스 공부 2021. 1. 7.
반응형


Connect Error (2000) mysqlnd cannot connect to MySQL 4.1+ using old authentication

나는 이것을 조사했고, MySQL 4.1 이전에 사용 된 오래된 암호 체계와 관련이 있습니다. 최신 버전에는 이전 암호를 사용할 수있는 옵션이 있으며, 이로 인해이 문제가 발생할 수 있습니다.

나는 php 5.3을 실행하고 있고 mySQLi (new mysqli (...))와 연결하고 있습니다. bluesql.net에서 DB에 연결하기 위해 코드에서 무언가를 할 수 있기를 바랍니다. 분명히 데이터베이스 설정 방법을 제어 할 수 없습니다. PHP 버전 다운 그레이드는 옵션이 아닙니다.

누구나 아이디어가 있습니까?

 

해결 방법

 


먼저 SQL 쿼리로 확인

SHOW VARIABLES LIKE 'old_passwords'


mysql.user 테이블 (해당 테이블에 대한 액세스 권한이있는 계정 포함)을 살펴보면 어떤 루틴이 사용 될지 확인할 수 있습니다.

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user

이렇게하면 이전 비밀번호를 사용하는 계정의 경우 16 이 반환되고 새 비밀번호가있는 계정의 경우 41 이 반환됩니다 (비밀번호가없는 계정의 경우 0이 반환됩니다. 음).
MySQL 프런트 엔드 (있는 경우)의 사용자 관리 도구를 사용하거나

SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges;

( User Host 를 이전 쿼리에서 얻은 값으로 바꿉니다.) 그런 다음 암호 길이를 다시 확인합니다. 이제 41 이어야하며 클라이언트 (예 : mysqlnd)가 서버에 연결할 수 있어야합니다.

MySQL 문서도 참조하십시오.




 

참조 페이지 https://stackoverflow.com/questions/1575807

 

 

반응형

댓글