최근 MySQL 8.0 이상 버전에서 PHP 또는 Workbench를 통해 root 계정으로 접속하려고 할 때 아래와 같은 오류 메시지를 본 적이 있을 겁니다.

Authentication plugin 'caching_sha2_password' reported error:
Authentication requires secure connection.
이 오류는 MySQL의 기본 인증 방식이 caching_sha2_password로 바뀌었기 때문입니다. 일부 환경에서는 SSL 기반의 보안 연결이 없으면 해당 방식으로 로그인할 수 없습니다. 특히 PHP나 구버전 Workbench에서 이 문제를 많이 겪습니다.
MySQL 8.0부터 caching_sha2_password가 기본 인증 방식입니다.
하지만 다음과 같은 경우에는 이 인증 방식을 제대로 지원하지 못합니다.
mysqli_connect()로 연결 시mysql_native_password로 변경mysql -u root -p --port=3307
필자는 현재 서버 포트가 3307이어서 포트를 명시했지만 3306인 경우 MySQL의 기본 포트이기 때문에 --port=3307은 생략 가능합니다.
비밀번호 입력 → 기존에 설정한 root 계정 비밀번호 입력 (예:
1234)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '원하는_비밀번호';
FLUSH PRIVILEGES;
예시:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'superSafe987!';
FLUSH PRIVILEGES;
<?php
$con = mysqli_connect("localhost", "root", "superSafe987!", "", 3307);
if (!$con) {
die("접속 실패: " . mysqli_connect_error());
}
echo "MySQL 접속 성공!";
mysqli_close($con);
?>
✅ MySQL 포트를 3307로 바꿨다면 꼭 위처럼 포트 번호도 지정해야 합니다.
이 문제는 처음 보면 막막할 수 있지만, 인증 방식만 이해하면 깔끔하게 해결됩니다.
저도 처음엔 이유도 모르고 Workbench 연결이 안 돼서 당황해서 포트 번호도 바꿔보고 XAMPP를 껐다키고 MySQL을 재설치하고 재부팅하고 다 해봤지만, 이 과정을 통해 인증 방식의 차이를 이해하게 되었습니다.
혹시 같은 문제를 겪는 분들께 도움이 되길 바랍니다! 🙌
mysqli_connect()의 포트 지정 필수