본문 바로가기
Database/MYSQL

mysql_native_passwordMySQL 8.4에서 로드되지 않은 오류를 수정하는 방법

by 반화넬 2025. 3. 4.
반응형



MySQL 8.4(2024년 기준 최신 LTS 릴리스)에 도입된 주요 변경 사항 중 하나는 "MySQL Native Password" 플러그인이 더 이상 기본적으로 활성화되지 않는다는 것입니다. 또한 MySQL 9.0은 이 플러그인을 완전히 제거합니다.

이 변경 사항은 인증 플러그인과 함께 MySQL 데이터베이스를 사용하는 PHP 및 기타 애플리케이션에 영향을 미칩니다 mysql_native_password. mysql_native_password플러그인이 더 이상 기본적으로 로드되지 않거나 전혀 사용할 수 없기 때문에 PHP PDO/MySQLi 연결이 실패합니다.

더 이상 로드되지 않은 플러그인을 사용하여 데이터베이스에 연결을 시도하면 mysql_native_passwordPDO/MySQLi는 MySQL에서 반환된 오류를 발생시킵니다.

 

 

PDO:

SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded

 

MySQLi :

 mysqli_sql_exception  Plugin 'mysql_native_password' is not loaded.

MySQL 8.0.34~8.3에서 mysql_native_password플러그인을 사용하면 MySQL 오류 로그에 경고가 기록됩니다.

[Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

MySQL 8.4에서는 플러그인을 더 이상 로드하지 않도록 변경하여 mysql_native_password위에 표시된 오류가 발생합니다. MySQL 9.0에서는 mysql_native_password플러그인이 완전히 제거되어 동일한 오류가 발생합니다.


PHP는 PHP 7.4부터caching_sha2_password 인증을 지원합니다 . 이 오류를 수정하려면 MySQL 사용자의 인증 플러그인을 . 으로 변경하세요.caching_sha2_password

MySQL 사용자 목록 작성mysql_native_password

MySQL 콘솔에서 더 이상 사용되지 않는 인증 플러그인을 사용하는 사용자를 나열하려면 다음을 실행합니다.

SELECT user, host, plugin from mysql.user WHERE plugin='mysql_native_password';

위 명령을 실행하면 mysql_native_password플러그인을 사용하는 모든 사용자가 나열됩니다.

mysql_native_password사용자를 업데이트하세요caching_sha2_password

충분한 권한이 있는 MySQL 콘솔에서 플러그인을 사용하여 각 사용자에 대해 다음 명령을 실행합니다 mysql_native_password.

ALTER USER '<USERNAME>'@'<HOST>' IDENTIFIED WITH caching_sha2_password BY '<PASSWORD>';

 

<USERNAME>, <HOST>, 를 <PASSWORD>MySQL 사용자의 사용자 이름, 호스트, 비밀번호로 바꾸세요 .

인증 플러그인이 업데이트되면 PHP와 다른 애플리케이션이 플러그인을 통해 데이터베이스에 연결할 수 있게 됩니다 caching_sha2_password.

MySQL 네이티브 비밀번호 플러그인 다시 활성화

MySQL 8.4가 더 이상 기본적으로 플러그인을 활성화하지 않지만 , 여전히 이 플러그인을 활성화mysql_native_password 할 수 있습니다 . PHP 애플리케이션이 플러그인을 사용할 수 없는 PHP 7.3 또는 이전 버전을 실행하지 않는 한 이를 권장하지 않습니다 .caching_sha2_password

플러그인을 활성화하려면 MySQL 구성 파일의 섹션 mysql_native_password에 다음을 추가 [mysqld]하고 MySQL 서버 서비스를 다시 시작하세요.

Debian/Ubuntu 기반 시스템에서 이 파일은 디렉토리에 있습니다 . 이를 위해 /etc/mysql/새 파일(예: )을 만드는 것이 좋습니다 ./etc/mysql/conf.d/enable-mysql-native-password.cnf

 

# Enable mysql_native_password plugin
[mysqld]
mysql_native_password=ON

 

 mysql_native_password플러그인은 MySQL 9.0에서 제거되었으므로 위의 구성을 추가해도 작동하지 않으며, 해당 mysql_native_password구성이 더 이상 MySQL 9.0에서 유효하지 않아 구성 오류가 발생할 수 있습니다.

반응형