Object Relational Mapping
(객체를 관계성을 잡아서 연결한다?)
⬆️ 여러 언어의 프로그래밍으로 작성한 내용이 엑셀시트와 같이 데이터로서 입력되게 함.
코드를 구현하면서 서드파티모듈들을 모두 설치하고 require했다.
http, express, cors, morgan, nodemon, dotenv, typeorm
여기서 코드 구현중에 에러가 발생했다.
이름하야
Error: getaddrinfo ENOTFOUND 127.0.0,1
뭔가 찾아봤더니 자세히 보니 dot(.)을 comma(,)로 찍혀있어서...늘 하는 바보같은 실수..
그리고 수정 후 했더니 다른 에러 등장..😭
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
에러가 난 시점에 가뭄에 단비 같은 동료분께서 슬랙에 공유를 해주셨다..
관련내용에 관련해서 다른 분이 mysql8.0dmf node.js 할때 같은현상으로 일어난 내용을 블로깅 하신 내용도 구글링해서 찾아볼 수 있었다.
관련링크 : https://1mini2.tistory.com/88
원인 : 이 문제는 클라이언트 프로그램에서 mysql 패스워드 플러그인 "caching_sha2_password"을 소화하지 못해서 생기는 오류입니다.
클라이언트 프로그램에서 사용할 수 있도록 유저의 패스워드 Plusin을 바꿔야 한다.
수정과정
$ SELECT Host,User,plugin,authentication_string FROM mysql.user;
를 입력하여 현재 "???의 상태를 확인하여 user의 정보를 수정할 수 있도록 한다.
$ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
를 통하여 user의 정보를 변경
위 이미지는 user의 정보 조회(select)와 정보 수정(alter)를 통하여 오류를 변경한 terminal 이다.
그리고 마주한 또다른 에러..
ER_ACCESS_DENIED_ERROR 'Access denied for user '@'localhost' (using password: YES)'
이 에러의 문제는 node.js에서 mysql 연결시 나올 수 있는 에러문구로, 말 그대로 권한이 없다는 것이다.
이때는 호스트를 만들어 권한을 주면 해결 가능하다.
$ select host, user from mysql.user;
를 통하여 우선 조회 확인!
결국 멘토님께 SOS 요청...
문제는 .env(환경변수)에 해당하는 내용에 대해서 나에게 맞는 정보를 입력하여 npm을 start해야했다. 또한 DATABASE 또한 지정되어있지 않아
mysql에서 database를 생성하여 그에 맞는 database를 작성한 후에 npm start를 해야만한다.
이렇게 해서 모든 typeorm에 대한 정보를 연동시켜서 npm start!
ㅠㅜ... 초기셋팅 연동.. 성공... 참 별거아닌데 이걸 오래끌고 너무 힘들었다.
이제 수업을 따라갈 수 있도록 다음 단계로 넘어가보자!