Mysql 접속 시 발생하는 ISSUE

상황

MySQL 1251 오류

내 코드

app.use(express.json());
const connection = mysql.createConnection({ dbconfig });
connection.query('SELECT * from User', (error, rows, fields) => {
    if (error) throw error;
    console.log('User info is: ', rows);
});
app.listen(PORT, () => {
    console.log(`The Server is Listening at ${PORT}`);
});

에러 코드

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at Handshake.Sequence._packetToError (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
    at Handshake.ErrorPacket (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/protocol/sequences/Handshake.js:123:18)
    at Protocol._parsePacket (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/protocol/Protocol.js:291:23)
    at Parser._parsePacket (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/protocol/Parser.js:433:10)
    at Parser.write (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/protocol/Parser.js:43:10)
    at Protocol.write (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/protocol/Protocol.js:38:16)
    at Socket.<anonymous> (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/Connection.js:88:28)
    at Socket.<anonymous> (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/Connection.js:526:10)
    at Socket.emit (node:events:527:28)
    at addChunk (node:internal/streams/readable:315:12)
    --------------------
    at Protocol._enqueue (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/Connection.js:116:18)
    at Connection._implyConnect (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/Connection.js:454:10)
    at Connection.query (/Users/pjh/Desktop/chatandsns/node_modules/mysql/lib/Connection.js:196:8)
    at Object.<anonymous> (/Users/pjh/Desktop/chatandsns/src/server.js:9:12)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12) {
  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
}

이유

외부 연결을 허용하지 않고 mysql이 연결되어 오류가 발생했습니다!

해결하다

외부 접근 허용 체크

: mysql> mysql.user에서 호스트, 사용자를 선택합니다.

위 명령어를 통해 외부 접근 허용 여부를 확인하세요!

호스트인 경우 로컬 호스트 다른 주소가 없으면 외부 접근이 허용되지 않습니다.

서버 등 외부에서 접근을 허용하려면 호스트 주소를 %로 지정합니다.

mysql> 사용자 생성 ‘‘@’%’ ‘루트’로 식별됨;

MySQL 데이터베이스 및 계정을 생성합니다.

mysql> *.*에 대한 모든 권한을 ‘에 부여합니다.부여 옵션이 있는 ‘@’%’;

모든 dbs 및 테이블에 권한을 부여하고 로컬 및 원격 모두에서 액세스할 수 있도록 설정합니다.

mysql> FLUSH PRIVILEGES;

설정한 권한 적용 (반드시 적용해야 합니다.)

mysql> mysql.user에서 호스트, 사용자 선택;

⇒ 제대로 설정되었는지 확인하십시오.

비밀번호 플러그인 확인

: MySQL 8.0에서는 MySQL 비밀번호 플러그인 “caching_sha2_password”로 인해 클라이언트 프로그램에서 오류가 발생한다.

mysql> mysql.user에서 호스트, 사용자, 플러그인, 인증_문자열을 선택합니다.

데이터베이스의 암호 플러그인을 확인하십시오.

mysql> ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘root’;

플러그인을 “mysql_native_password” 플러그인으로 교체

참조 블로그: (MySQL 8.0) nestjs 율동 보기 해결 ER_NOT_SUPPORTED_AUTH_MODE: 클라이언트가 서버에서 요청한 인증 프로토콜을 지원하지 않습니다. MySQL 클라이언트 업그레이드 고려