Error) Client does not support authentication protocol requested by server; consider upgrading MySQL client'

7610 단어 mysqlnode.jsmysql

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;

로 확인을 하였고

결과는 성공적이었다.

느낀점

  • 에러코드를 무조건 구글링한다고해서 해결방법이 나오는것이 아니다.
  • 기본적으로 프로그램이 정상적으로 사용되고 있는지먼저 확인해보는게 좋다.

참고

좋은 웹페이지 즐겨찾기