nodejs 와 mysql 연동 에러 해결

K S Michael·2020년 4월 15일
2

mysql

목록 보기
6/6

mysql을 brew로 설치하고 nodejs와 mysql을 연동하게되면 아래와 같은 에러가 발생할수 있다.

에러 발생

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at Handshake.Sequence._packetToError (/Users/***/Desktop/database/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
    at Handshake.ErrorPacket (/Users/***/Desktop/database/node_modules/mysql/lib/protocol/sequences/Handshake.js:123:18)
    at Protocol._parsePacket (/Users/***/Desktop/database/node_modules/mysql/lib/protocol/Protocol.js:291:23)
    at Parser._parsePacket (/Users/***/Desktop/database/node_modules/mysql/lib/protocol/Parser.js:433:10)
    at Parser.write (/Users/***/Desktop/database/node_modules/mysql/lib/protocol/Parser.js:43:10)
    at Protocol.write (/Users/***/Desktop/database/node_modules/mysql/lib/protocol/Protocol.js:38:16)
    at Socket.<anonymous> (/Users/***/Desktop/database/node_modules/mysql/lib/Connection.js:88:28)
    at Socket.<anonymous> (/Users/***/Desktop/database/node_modules/mysql/lib/Connection.js:526:10)
    at Socket.emit (events.js:321:20)
    at addChunk (_stream_readable.js:294:12)
    --------------------
    at Protocol._enqueue (/Users/***/Desktop/database/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/Users/***/Desktop/database/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/Users/***/Desktop/database/node_modules/mysql/lib/Connection.js:116:18)
    at Object.<anonymous> (/Users/***/Desktop/database/server/db/index.js:15:5)
    at Module._compile (internal/modules/cjs/loader.js:1157:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
    at Module.load (internal/modules/cjs/loader.js:1001:32)
    at Function.Module._load (internal/modules/cjs/loader.js:900:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47 {
  code: 'ER_NOT_SUPPORTED_AUTH_MODE',
  errno: 1251,
  sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
  sqlState: '08004',
  fatal: true
}

에러해결

brew로 mysql을 설치하고 비밀번호는 설정 하지 않았다.
비밀번호를 설정하지 않은것과 비밀번호가 ""(빈 문자열)은 차이가 있는것 같다.
비밀번호를 빈문자열로 바꿔서 접속이 가능한지 테스트 해보았다.
접속이 정상적으로 처리 되었다.
해결 이후,
왜 이러한 에러가 있었는지에 대해서 찾아보다가 유튜브 댓글이 도움이 될것 같아 링크를 걸어 두었다.

주의
비밀번호가 없거나, 간단한 비밀번호는 권장하지 않는다.
참고 mysql 비밀번호 변경


Reference

errno: 1251

안되시는 분들 아래 링크에서 설명한거 읽어보세요.

  • 참고
    8.0 버전으로 오면서 외부접속 시 로컬 비밀번호가 아니라 암호화된 다른 비밀번호를 사용하도록 바뀐 것 같습니다. 그래서 일반적으로 접속할 때 사용하는 비밀번호로도 외부에서 접속이 가능하게끔 설정해주어야 합니다.
    create user '유저명'@'%' identified with mysql_native_password by '비번';
    이 명령어로 기존 방식으로 암호를 사용하여 접속이 가능한 유저를 새로 만들어주시고,
    grant all privileges on . to '유저명'@'%';
    이 명령어로 권한을 주시면 강의와 같이 잘 동작합니다.
    -유튜브 생활코딩 댓글 중 링크-
profile
차근차근

4개의 댓글

comment-user-thumbnail
2021년 3월 4일

덕분에 문제 해결했습니다 감사합니다 : )

1개의 답글
comment-user-thumbnail
2021년 4월 27일

어제부터 이 문제때문에 삽질했는데 덕분에 에러 해결했습니다! 감사합니다 ㅠㅡㅠ!!!

1개의 답글