[MySQL] Client does not support authentication protocol requested by server; consider upgrading MySQL client 에러 해결 방법

나범수·2024년 5월 27일

오류/트러블슈팅

목록 보기
2/5

현재 Mysql 상태

test.db
1	test1	ㄴㅇㄹ1234	테스터1
			

사용 코드

const express = require('express');
const app = express();
const path = require('path');
const PORT = process.env.PORT || 4000;
const db = require('./config/db.js')


app.get('/',(req,res)=>{
    console.log('root')
})

app.get('/movies',(req,res)=>{
    console.log('/movies 사이트로 이동이 성공했습니다!' )
    db.query("select * from testdb", (err, data)=>{
        if(!err){
            console.log(data)
        }
        else{
            console.log(err, '에러 발생')
        }
    })
})

app.listen(PORT, function() {
    console.log(`서버실행 : http://localhost:${PORT}`)
})

이렇게 작성했더니 해당 오류가 발생

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client 
    at Sequence.

원인
구글링을 통해 찾아보았지만 원인은 정확히 알 수가 없었다.
chatGPT를 통해 알아볼 수 있는 원인은 크게 1.MySQL 버전 문제, 2.문법 오류, 3.권한문제라고 한다.
그러나 이 중 정확하게는 알 수가 없었고 구글링의 해결을 통해 아마 권한문제라고 추론을 할 수 밖에 없다..

해결방법
mySql에 들어간다 (나는 워크밴치를 사용했기 때문에 워크밴치에 접속했다)

ALTER user 'root'@'localhost' IDENTIFIED with mysql_native_password by 'password';

'root' = mysql 본인 root 아이디
'localhost' = 본인 주소
'password' =본인 루트 비밀번호 

를 입력한다.

코드를 해석해보면 localhost안에 있는 root의 비밀번호를 password로 변경한다는 의미이다.

강의 및 블로그를 찾다보면 데이터베이스를 만든 이후 데이터베이스에 사용할 계정을 만들고 데이터베이스에 권한을 사용할 수 있도록 요청하는 절차가 있다는 글을 본적이 있다.

나는 데이터베이스만 만들고 따로 권한요청은 하지 않았는 데 그래서 해당 오류가 발생한 것이라고 생각한다.

profile
어떻게든 배워야 한다...!

0개의 댓글