상황
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” 플러그인으로 교체