Part 3은 Node.js 환경에서 SQL을 이용해 여러 요구사항을 충족시켜야 합니다. Part 3의 목표는 데이터베이스를 연결하고, 주어진 스키마를 구현할 수 있도록 SQL 문을 작성해야 합니다.
brew install mysql
brew services start mysql
처음 설치했으면 root의 암호는 비어있다
처음 접속을 아래 명령어로 한 뒤 비밀번호 설정해주자
mysql -u root
비밀번호를 설정하고 나서는 밑의 명령어로 MySQL에 접속해야 한다
# -u(계정 접근), -p(비밀번호)
mysql -u root -p
비밀번호 변경 명령어
MySQL에서 'root' 사용자의 비밀번호를 'yourPassword'로 변경하는 명령어
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourPassword';
part3 에서는 Node.js에서 작성해야 할 데이터베이스 연결 부분은 이미 구현되어 있어서 cmarket database 스프린트를 통해 데이터베이스에 직접 연결하는 부분만 작성하면 되었다
create database learnmysql;
모든 데이터베이스 보기
show databases;
migrations > schema.sql
밑의 요구사항을 보고 작성 하면 된다
- PK(Primary Key)는 auto increment입니다.
- FK(Foreign Key)를 제외하고는 모두 NOT NULL입니다.
- created_at 과 같은 날짜/시간 정보는 timestamp이고, 4. default current_timestamp입니다.
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`)
);
현재 있는 데이터베이스에 존재하는 모든 테이블 정보를 보기위한 SQL을 작성
`SHOW TABLES`;
user 테이블의 구조를 보기위한 SQL을 작성
`DESC user`;
content 테이블의 구조를 보기위한 SQL을 작성
`DESC content`;
원래 테이블 작성을 터미널에 해야 하지만 그걸 테스트 할 수 없기 때문에
이번 스프린트에서는 테이블 작성을 위한 파일을 하나 만들어 놓고
테스트를 돌리면 그 파일이 실행되며 테이블을 만드는 형태로 구성되어 있다
그렇기 때문에 백틱 안에 작성을 해야 하는데 실제로 터미널에서 입력해서 볼 때는 백틱없이 작성하면 된다
위의 명령어를 터미널에서 직접 실습하고 싶다면
use learnmysql;
으로 데이터베이스를 선택하고
그 뒤에 위의 명령어를 사용하면 된다
처음에 비밀번호가 잘 못 설정되어서 비밀번호 변경하는 방법을 찾다가
블로그에서 아래 명령어를 보고 비밀번호 변경을 했는데 이게 스프린트 실행에 문제가 되는 원인이 되었다
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '1234';
밑과 같은 에러코드가 발생했고 왜 발생하는지 에러코드 검색하며 페어분이 같이 찾아주셨다
비밀번호 변경했던 명령어에 문제가 있는 것 같다고 유어클래스에 나와있는 비밀번호 변경 명령어로 다시 바꿔보면 좋겠다고 하셔서 밑의 명령어로 변경했더니 제대로 접속 할 수 있었다
Error: the string "ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client" was thrown, throw an Error :)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourPassword';