Error) Client does not support authentication protocol requested by server; consider upgrading MySQL client'
1. 문제인식
USE learnmysql
CREATE TABLE `user` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`name` varchar(255) not NULL,
`email` varchar(255) not NULL
);
CREATE TABLE `content` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`title` varchar(255) not NULL,
`body` varchar(255) not NULL,
`created_at` timestamp not NULL DEFAULT CURRENT_TIMESTAMP,
`userId` int,
FOREIGN KEY (`userId`) REFERENCES `user` (`id`)
);
node.js를 활용해 데이터베이스를 생성한뒤 위 두개의 테이블을 만들어 연동을하려 하였으나
"Client does not support authentication protocol requested by server; consider upgrading MySQL client'"
로 에러가 나왔다.
2. 해결방법 시도(1)
- 나의 8.0버전으로 이전 5.7이후부터 테이블의 구조 변경으로 발생된문제인것을 확인했다.
- MySQL 8.0버전 이상에서 쓰이고 있는 인증 플러그인 암호화 방식
caching_sha2_password 를 지원하지 않기 때문에 발생하게 된다.
시도- 해결방법 시도(1)
SELECT Host,User,plugin,authentication_string FROM mysql.user;
을 mysql에 입력한결과 내가 사용하는 root의 plugin이 "caching_sha2_password" 인것을 확인했다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '사용할 비밀번호';
를 입력한 결과
root의 plugin이 바뀐것을 확인했다.
결과- 해결방법 시도(1)
결론적으로 해결되지 않았다.
아직까지 Node.js와 연동자체가 성립되지 않았으며 에러는 여전히 그대로 였다.
2. 해결방법 시도(2)
- 천천히 고민을 해보았고 mysql이 구동은 되는것을 확인하였으나 Node.js와 연동이 안되는 부분을 물고 늘어지기로 했다.
- 그러던중 mysql을 설치하면 아래 명령어로 서비스를 시작한다.
$brew services start mysql
- 하지만 brew services로 되는 mysql과 mysql자체 서버의 시작은 전혀 다르다는것을 알았다.
위 사진에서 보다시피 brew로 mysql을 정지시키고 brew services list로 확인결과 mysql이 멈춰있는것을 알 수있다. 하지만 mysql.server start를 했지만 여전히 brew list에서는 mysql이 멈춰있는것을 확인했다.
TIP)mysql의 server가 정상적으로 작동하는지 확인하는방법
$ netstat -na | grep 3306 //MySQL의 포트번호는 3306 이므로, 서비스가 돌고 있다면 아래와 같이 3306의 서비스를 확인 할 수 있다.
위 명령어를 입력하면 밑의 사진과 같이 서버가 정상적으로 작동하는것을 확인 할 수 있다.
시도- 해결방법 시도(2)
이를 토대로
brew services start myslq
mysql.server start
위 두가지 명령어를 입력하였고 성공했다는 출력문을 본뒤 다시 서버연결 상태를 보았다.
결과- 해결방법 시도(2)
결과적으로 출력이 잘 되었다.
확인은
mysql> show databases;
mysql> use learnmysql;
mysql> show tables;
로 확인을 하였고
결과는 성공적이었다.
느낀점
- 에러코드를 무조건 구글링한다고해서 해결방법이 나오는것이 아니다.
- 기본적으로 프로그램이 정상적으로 사용되고 있는지먼저 확인해보는게 좋다.
참고
Author And Source
이 문제에 관하여(Error) Client does not support authentication protocol requested by server; consider upgrading MySQL client'), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@baek1008/Error-Client-does-not-support-authentication-protocol-requested-by-server-consider-upgrading-MySQL-client저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)