nodejs 환경에서 mysql을 연결하는데 연결 테스트 쿼리를 했을 때 아래와 같은 오류가 발생했다. 구글링 해보니까 mysql 접속 후 아래 명령어를 입력하면 해결 가능하다해서 진행했다.
ER_NOT_SUPPORTED_AUTH_MODE
ALTER USER '[계정]'@'[호스트]' IDENTIFIED WITH mysql_native_password BY '[비밀번호]';
사실 해당 명령어로 해결이 안돼서 열심히 구글링하던 와중에 mysql 라이브러리를 사용하지 말고 mysql2 라이브러리를 사용하면 해결 가능하다는 글을 보고 쉽게 해결했다.
const mysql = require("mysql");
// -->>>>>>>
const mysql = require("mysql2");
문제는 해결했는데 도대체 mysql2가 먼지 궁금해서 찾아보니 npm에서 아래와 같이 소개하고 있었다.
MySQL client for Node.js with focus on performance. Supports prepared statements, non-utf8 encodings, binary log protocol, compression, ssl much more
말그대로 성능에 초점을 맞춘 mysql 라이브러리다. 이전에 sequelize 사용할 때 필수로 mysql2를 사용해서 sequelize 전용이라고 생각했었는데 사실 promise를 지원한다는 이유 때문에 사용했던 거였다.
추가로 비동기 처리를 하기 위해서 require("mysql2") 대신 require("mysql2/promise")를 사용해야 함.