본문 바로가기

dev/error

Authentication plugin 'caching_sha2_password' cannot be loaded

시작은 아래와 같은 에러였다

>python manage.py runserver
....
NameError: name '_mysql' is not defined.

mysql 때문에 고생했던 지난 날.. 재설치해서 해결했던 에러였다

 

바로 mysqlclient 재설치

 

그리고 난생 처음보는 (여기와서 보는 에러가 전부 난생처음본다만..) 에러를 만났다

 

>python manage.py runserver
....
MySQLdb._exceptions.OperationalError:
(2059, "Authentication plugin 'caching_sha2_password' cannot be loaded:
dlopen(/Users/jayce/miniconda3/envs/westagram/lib/plugin/caching_sha2_password.so, 0x0002):
...
tried: '/Users/jayce/miniconda3/envs/westagram/lib/plugin/caching_sha2_password.so' (no such file),
'/usr/local/lib/caching_sha2_password.so' (no such file),
'/usr/lib/caching_sha2_password.so' (no such file)")

같은 에러가 장고에서도 동시에 나고 있었다

 

아...뭐가 문제인가 천천히 생각해봤다

 

일단 당황하지 말고 어떤 에러인지 보자

 

Authentication plugin 'caching_sha2_password' cannot be loaded:

인증 플러그인 'caching_sha2_password'이 로드될 수 없습니다 라는 뜻인데..

 

난 플러그인이 뭔지 모르지만 일단 천천히 에러를 더 읽어나가다보니

내가 만든 westagram 프로젝트의 plugin 폴더에서  'caching_sha2_password.so'라는 파일을 못 찾고 있다

(so 확장자는 숨김처리 되어있다)

 

아..비밀번호 관련 오류구나

 

하지만 여기서 문제가 있다

내 비밀번호는 매우 간단하며

내가 비밀번호를 settings.py에 잘못 입력하지도 않았고

mysql 접속은 되어있다는 소리다

 

일단 가상환경부터 싹 밀고 다시 구축하고 런서버
--> 해결 안 됨

 

stackoverflow에 검색해 본 결과 바다 건너 개발자 슨생님들 중 같은 오류를 맞이한 분이 계셨고

settings.py의 DATABASES 정보의

'ENGINE': 'django.db.backends.mysql', 부분을

'ENGINE': 'mysql.connector.django', 로 바꿔서 해결했다고 했다

 

'ENGINE': 'django.db.backends.mysql', 를
'ENGINE': 'mysql.connector.django', 로 바꿈

--> 해결 안 됨

 

경래님을 찾아갔다..

살려주십쇼..

 

테스트용 가상환경에서 테스트용 프로젝트 런서버
--> 됨

 

????????

....내 자리로 돌아와서 혹시 하는 마음에 테스트용 프로젝트를 가상환경에서 돌려봤다

 

기존 가상환경에서 테스트용 프로젝트 런서버
--> 됨
--> 일단 가상환경 문제 아님

 

문득 경훈님의 주옥같은 가르침 중 하나가 생각났다

에러가 나면 에러를 재현하라. 

 

경훈가라사대 에러 재현에 성공하는 것이 에러 슈팅의 첫걸음이다...크..취한다

바로 재현에 들어갔고 404에러가 뜨는 시점이 settings.py에 DATABASES 정보를 입력하는 과정이라는 것을 알아냈다

앞서 건진 단서들과 종합해보면 결국 해당 정보의 비밀번호 문제라는 것인데

나는 비밀번호를 맞게 입력헀다...

아 그럼 내가 친 코드는 문제가 없는 것이다 라고 결론

 

다시 폭풍 구글링

선배 위코더 블로그에 답이 있었다 (위코드 만세..)

(https://velog.io/@ziy0ung1229/Django-%EC%84%B8%ED%8C%85-Error)

 

결국 답은 간단했다 그저 비밀번호 재설정...

mysql > use mysql;
mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '사용할 비밀번호 입력';
mysql > FLUSH PRIVILEGES;  #변경사항 적용

--> 해결

 

그래....어떻게 문제를 해결하긴 했는데

내가 이걸 남에게 설명할 수 없다면 모르는 것이다

왜 이런 에러가 났는지 나름 찾아봤다

 

일단 암호화 관련한 문제고 운영체제나 쓰고 있는 sql 프로그램에 따라 위치가 다르지만

mysql이 설치된 경로를 타고 들어가면 있는 my 라는 파일을 찾아 들어가서 텍스트 찾기로

default_authentication_plugin 를 찾아보면 문제가 해결되었다면 아래처럼 되어있을 것이다

default_authentication_plugin=mysql_native_password

mysql_native_password 자리에 caching_sha2_password 가 있었기 때문에 일어난 에러다

 

깊이 배우지 않아 정확히 어떤 작용을 하는지 모르지만

그래도 지금 수준에서는 딱 여기까지만!