일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 스택 큐 차이
- 서비스 쓰레드 차이
- 스택 자바 코드
- jvm 작동 원리
- android ar 개발
- Rxjava Observable
- ANR이란
- 플러터 설치 2022
- 안드로이드 라이선스
- 2022 플러터 설치
- 안드로이드 레트로핏 crud
- 안드로이드 os 구조
- 안드로이드 유닛 테스트
- rxjava disposable
- 멤버변수
- 안드로이드 유닛 테스트 예시
- rxjava cold observable
- 안드로이드 라이선스 종류
- 큐 자바 코드
- 안드로이드 유닛테스트란
- 서비스 vs 쓰레드
- 클래스
- 2022 플러터 안드로이드 스튜디오
- android retrofit login
- jvm이란
- 자바 다형성
- ar vr 차이
- 안드로이드 레트로핏 사용법
- rxjava hot observable
- 객체
- Today
- Total
나만을 위한 블로그
[PHP] mysqli::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] 에러 해결 본문
[PHP] mysqli::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] 에러 해결
참깨빵위에참깨빵_ 2020. 1. 23. 17:27언제부턴가 포트 포워딩이 제대로 되지 않아서 해결을 못하고 결국 리눅스를 재설치한 뒤 웹 페이지 코드들과 DB 설정들을 복구했다.
그런데 게시판에 들어가자 아래와 같은 에러가 발생했다.
mysqli::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in ~~~
construct(): 뒤의 문장은 '서버가 클라이언트에게 알려지지 않은 인증 방법을 요청했습니다' 라는 뜻이다.
인증 방법? 인증 방법이란 말이 왜 튀어나왔을까....뭘 인증한단 거지? 내가 권한을 가진 사람인지를 인증한다는 뜻인가?
이런 생각을 하면서 에러 문구를 그대로 구글에 붙여넣었다.
그러자 내 눈에 바로 스택 오버플로우의 질문글이 보였다.
2번째 답변에 I solved this by SQL command 라고 적혀있으며 그 밑엔 이런 SQL 문이 있었다.
ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';
이 양식대로 mysqlUsername, mysqlUsernamePassword 부분만 바꿔주고 다시 게시판에 들어가보니 해결됐다.
그런데 이 문장이 무슨 의미인지 궁금해졌다. 그래서 MySQL 디벨로퍼 사이트에 들어가 검색해봤다.
아래는 MySQL 디벨로퍼 사이트에 적혀있는 ALTER USER 문에 대한 설명 중 일부다.
https://dev.mysql.com/doc/refman/8.0/en/alter-user.html
- 'alter user' 문은 MySQL 계정을 수정하는 SQL문이다. 기존 계정에 대한 인증, 역할, 리소스 제한 및 암호 관리 속성 수정 등의 기능을 한다. 계정을 잠그거나 잠금 해제하는 데 쓸 수도 있다.
대부분의 경우 alter user 문에는 전역 create user 권한 or MySQL 시스템 스키마에 대한 update 권한이 필요하다.
그런데 mysql_native_password라는 건 뭘 의미하는 건지 모르겠어서 디벨로퍼 사이트에서 검색해봤다.
일반 텍스트 비밀번호 값과 함께 인증 플러그인 지정
인증 플러그인이 mysql_native_password라는 뜻인가? 잘 이해가 안가서 다른 블로그는 어떻게 썼는지 확인했다.
auto_plugin은 인증 플러그인으로써, plugin 필드열에 저장된다.
MySQL의 기본 인증 플러그인은 mysql_native_password다. (변경 가능함)
MySQL의 기본 인증 플러그인 중 하나가 mysql_native_password였다. 어느 정도 비슷하게는 생각했다.
위 내용들을 정리하면 alter user 문으로 MySQL 계정을 수정하는데, 이 때 mysql_native_password 라는 MySQL의 기본 인증 플러그인을 써서 BY 뒤의 'mysqlUsernamePassword' 안에 입력한 비밀번호를 plugin 필드열에 저장시킨다는 건가?
내가 썼지만 나도 이해가 잘 안된다. 일단 해결됐으니 나중에 더 공부하자.