개요

MySQL 이 8로 업그레이드되면서 기본 인증 정책이 mysql_native_password 에서 caching_sha2_password 로 변경되었습니다.


사용자 암호 해싱에 SHA-256 을 사용하니 더 견고해진 것은 맞지만 문제는 예전 client 로 연결시 다음과 같은 에러가 발생할 수 있는 점입니다.

MySQL 2054 error

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client 
BASH


해결하려면 DBMS 나 사용자의 인증 정책을 변경해 주면 됩니다.

사용자별 인증 정책 변경

MySQL 8은 ALTER USER 구문으로 사용자별로 사용할 인증 정책을 설정할 수 있습니다. 다음은 예전 인증 방식인 mysql_native_password 로 변경하는 예제입니다.

예전 인증 정책으로 변경

ALTER USER lesstif 
  IDENTIFIED WITH mysql_native_password
  BY 'mypassword';
SQL


만약 다음과 같은 에러가 난 다면 사용자명에 host 까지 명시적으로 지정해서 실행하면 됩니다.

MySQL 1396 에러

ERROR 1396 (HY000): Operation ALTER USER failed for 'lesstif'@'%'
BASH

예전 인증 정책으로 변경

ALTER USER 'lesstif '@'localhost'
  IDENTIFIED WITH mysql_native_password
  BY 'mypassword';
SQL


MySQL 서버 변경


MySQL 의 서버 설정에 다음과 같은 내용을 추가하고 재기동하면 모든 사용자에 대해 mysql_native_password 인증을 사용하므로 예전 클라이언트로 연결해도 문제가 없습니다.

[mysqld]
default_authentication_plugin=mysql_native_password
CODE

이미 생성한 사용자는 인증 방식이 달라지면 로그인 오류가 나니 암호를 재설정해줘야 합니다.

ALTER USER 'lesstif '@'localhost'
  IDENTIFIED BY 'mypassword';
CODE



같이 보기

Ref