코드스테이츠 11주차 / SQL 실습

support·2022년 1월 22일
0
post-thumbnail

Part 3은 Node.js 환경에서 SQL을 이용해 여러 요구사항을 충족시켜야 합니다. Part 3의 목표는 데이터베이스를 연결하고, 주어진 스키마를 구현할 수 있도록 SQL 문을 작성해야 합니다.

mac MYSQL 설치

  1. Homebrew를 이용한 설치
brew install mysql
  1. MySQL 서비스 시작
brew services start mysql
  1. 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'; 

📝summary

part3 에서는 Node.js에서 작성해야 할 데이터베이스 연결 부분은 이미 구현되어 있어서 cmarket database 스프린트를 통해 데이터베이스에 직접 연결하는 부분만 작성하면 되었다

1. 데이터베이스 생성

create database learnmysql;

모든 데이터베이스 보기

show databases;

2. content 테이블 생성 SQL 구문을 완성

migrations > schema.sql
밑의 요구사항을 보고 작성 하면 된다

  1. PK(Primary Key)는 auto increment입니다.
  2. FK(Foreign Key)를 제외하고는 모두 NOT NULL입니다.
  3. 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`)
);

3. 테이블 구조를 보기 위한 SQL문 작성

현재 있는 데이터베이스에 존재하는 모든 테이블 정보를 보기위한 SQL을 작성

`SHOW TABLES`;

user 테이블의 구조를 보기위한 SQL을 작성

`DESC user`;

content 테이블의 구조를 보기위한 SQL을 작성

`DESC content`;

원래 테이블 작성을 터미널에 해야 하지만 그걸 테스트 할 수 없기 때문에
이번 스프린트에서는 테이블 작성을 위한 파일을 하나 만들어 놓고
테스트를 돌리면 그 파일이 실행되며 테이블을 만드는 형태로 구성되어 있다
그렇기 때문에 백틱 안에 작성을 해야 하는데 실제로 터미널에서 입력해서 볼 때는 백틱없이 작성하면 된다

위의 명령어를 터미널에서 직접 실습하고 싶다면
use learnmysql;으로 데이터베이스를 선택하고
그 뒤에 위의 명령어를 사용하면 된다

error

처음에 비밀번호가 잘 못 설정되어서 비밀번호 변경하는 방법을 찾다가
블로그에서 아래 명령어를 보고 비밀번호 변경을 했는데 이게 스프린트 실행에 문제가 되는 원인이 되었다

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'; 

0개의 댓글