-
Web 백엔드 (6) / 데이터베이스란? MySQL 설치 및 사용Programming/Web Programming 2023. 5. 13. 04:24
이번 포스팅에서는 데이터베이스와 MySQL에 대해 공부한 내용을 작성할 예정이다.
강좌는 아래 주소에서 듣고 있다!
작성된 모든 내용들은 강좌에서 배운 내용을 기반으로 하고 있다.
클래스 101 [유료강좌]
개발자 사관학교 - [웹 개발자 단과반 2교시] MySQL, Node.js 백엔드 속성 실무!
https://class101.net/ko/products/5fac071c1105fb001383cd2a
[웹 개발자 단과반 2교시] MySQL, Node.js 백엔드 속성 실무! | 개발자 사관학교
웹 개발자 단과반이 필요한 이유는 뭘까요? 📍 대체 뭐부터 개발해야 할지 모르겠어요. 원래 처음 개발을 배우면, 뭐부터 시작할지 모르기 때문에 막막합니다. 개발 방향성이 없으니 그걸 잡아
class101.net
CHAPTER 3: 데이터베이스까지 다루는 초간단 서버 개발
[1. 엑셀과 닮은 MySQL 개념 잡기]
- 데이터베이스가 왜 필요할까?
서버에서는 당연한 정보들을 요청에 따라 전달해준다.
로그인 정보, 회원 정보, 조회수, 구매내역, 게시물 내용 등등..
데이터를 저장해두었다가 요청에 따라 건네주어야 하기 때문에 그 창고 역할을 하는 것이 데이터베이스이다.
- 데이터베이스의 종류 SQL과 NoSQL
SQL: 관계형 데이터베이스로 마치 엑셀처럼 데이터들이 행과 열을 갖고 정리되어 있다.
NoSQL: 일반적으로 json파일로 이루어져 있으며 딕셔너리와 리스트 자료형이 복합적으로 사용된다.
- MySQL
SQL을 제공해주는 데이터베이스는 많지만 그 중에서도 MySQL 다양한 기업들에서 가장 많이 쓰이고 있다.
우리도 이 데이터베이스를 사용해서 만들어 볼 예정이다.
MySQL도 마치 엑셀처럼 행과 열을 갖고 데이터들을 저장한다.
- Model
Node.js에서 model이라는 폴더 안에 데이터베이스 파일들을 보관한다.
또한 이런 데이터베이스 파일들을 '모델'이라고 부를 수 있다.
db.js에서는 데이터베이스의 모든 접속 기록을 저장해주는 역할을 한다.
그 외에 다양한 모델들(데이터베이스 파일들)이 폴더 안에 생겨날 예정이다.
- Node.js 웹서버와 MySQL서버
Node.js웹서버와 MySQL데이터베이스 서버는 서로 끊임없이 데이터를 주고 받는다.
Node.js와 마찬가지로 MySQL 역시 우리의 컴퓨터 안에서 서버가 돌아간다.
아직 돌리지 않아서 와닿지는 않지만, 컴퓨터 안에 각각 Node.js 서버와 MySQL서버가 돌아가는 것이다.
그리고 프론트의 요청에 따라 데이터를 받아 응답하는 상호보완적인 관계가 이루어진다.
- Sqequelize
그렇다면 이 데이터베이스를 어떻게 작성할까?
SQL 문법을 통해 데이터를 조회/생성/삭제/변경할 수 있다.
그렇다면 Node.js에 SQL 문법까지 해야한다는 의미이다..
아직 서버 개발이 익숙치 않은 상태에서 동시에 개발하려면 정말 머리가 아플 것이다..
이런 불편을 줄여주며, JavaScript로 SQL문법을 대체해줄 수 있도록 해주는 것이 바로 Squelize이다.
예를 들어 아래와 같은 SQL 문법을 Squelize를 통해 JavaScript 문법으로 바꿔줄 수 있다.
(SQL 문법) select * from users where createAt < '2020-12-12'
(Squelize) db.users.findAll (조건)
같은 내용이지만 자바스크립트를 통해 조금 더 쉽게 구현할 수 있다!
그럼 본격적으로 MySQL을 다운받고 사용해보자!
[2. 컴퓨터에 MySQL 설치하기]
컴퓨터에 MySQL을 설치해줄 것이다.
맥 특성상 명령어로 설치해주는 것이 더 간단하기 때문에, 터미널을 통해 설치해줄 예정이다.
* 윈도우는 명령어가 아닌 페이지에서 받아 다운받아주는 방법으로 진행한다고 한다.
아래 방법은 맥에만 해당한다는 점을 미리 말씀드립니다!
1. Homebrew 설치하기
명령어로 MySQL을 설치하기 전 homebrew를 먼저 설치해준다.
homebrew는 macOS 용 패키지 관리자로 터미널에서 프로그램을 설치, 삭제, 업데이트 등을 관리해준다.
개발자들이 많은 프로그램들을 효율적으로 사용하기 위해 많이 사용한다.
(= Homebrew에서는 프로그램들을 깔끔하게 삭제, 설치해준다!)
구글에 홈브류를 검색하거나 아래 링크를 타고 들어간다.
Homebrew
The Missing Package Manager for macOS (or Linux).
brew.sh
설치 명령어를 복사해준다 (맨 오른쪽 클립보드 복사 클릭!)
명령어를 터미널에 복붙해주면 패스워드를 입력해주는 창이 나온다.
맥북 비밀번호 입력해주면 설치가 시작된다.
엄청 많은 양의 알 수 없는 코드들이 쭉!! 나온다.
Warning 메시지가 불안해보인다..
하지만 우선 Sucessful! 이라고 하니 넘어가본다.
2. MySQL 설치하기
이제 homebrew 명령어를 통해 간단하게 MySQL을 설치해보자!
아래 명령어를 터미널에 입력해준다.
brew install mysql
그런데 brew라는 명령어를 인식하지 못한다.
어떻게 해야할지 막막했지만... 다행히도 어떤 분이 답글 달아준 내용으로 해보니 오류가 해결됐다.
다음 명령어를 입력한 뒤, 다시 위에 명령어로 mysql을 설치해준다.
eval $(/opt/homebrew/bin/brew shellenv)
엄청나게 많은 내용들이 터미널에 뜬다.
설치가 될때까지 1분 정도 기다려준다.
Summary가 뜨면 설치가 잘 되었다고 보면 된다.
- brew list 명령어로 mysql이 잘 있는지 확인해본다.
- mysql을 열어준다.
mysql
에러메시지가 나타난다.
이유는 mysql 서버를 켜주지 않았기 때문이다.
- mysql 서버를 켜준다.
mysql.server start
2. MySQL 사용자 설정하기
설치가 끝났다면 MySQL 사용자 설정을 해보자.
다음 명령어를 입력한다.
mysql_secure_installation
Press y/Y for Yes, any other key for No에 no라고 대답해준다.
대충 위의 내용은 복잡한 비밀번호를 설정할건지를 묻는 것이다.
간단해도 충분할 것 같아서 no를 해주었다.
두번째 질문에는 y 해준다.
원격으로 데이터베이스에 접속은 허용하지 않는다. (disallow - y)
테스트 데이터베이스는 받도록 한다. (y)
데이터베이스에 설정의 변화가 생기면 이를 데이터베이스 테이블에 적용할 것이냐는 물음이다. (y)
모든 설정을 마치면 All done!이라는 응답이 나타난다.
3. MySQL 접속하기
clear 명령어를 통해 터미널을 한번 깨끗이 지워준 후에, 이제 MySQL에 접속해보자.
mysql -u root -p
기본 사용자는 root라고 불린다.
위 명령어는 MySQL 데이터베이스에 접근할 것이며, 유저로서 패스워드를 입력하겠다고 컴퓨터의 말하는 것이다.
그러면 mysql 안으로 들어가게 된다.
show databases;
(*mysql 내에서는 명령어에 ;을 붙여야 한다.)
명령어로 어떤 데이터베이스가 있는지 살펴보자.
4개의 기본 데이터베이스들이 나타나는 것을 볼 수 있다.
새로운 데이터베이스를 만들어보자.
create database nodeStudy(원하는 이름);
;을 깜빡하니 ->라는 글자나 나타나서 다시 ;를 입력하니 다음으로 넘어간다..^^;
다음부터는 빼먹지 않고 한번에 잘 붙여서 써주자.
새로운 데이터베이스가 잘 만들어졌는지 다시 확인한다.
show database;
새로운 데이터베이스가 잘 들어가 있는 것을 볼 수 있다!
만약 그 중에서도 하나의 데이터베이스를 사용하고 싶다면 다음 명령어로 알려주어야 한다.
use nodeStudy(원하는 데이터베이스 이름);
그리고 그 안에 있는 데이터를 확인하기 위해 아래 명령어를 입력한다.
show tables;
아직 아무런 데이터도 넣지 않았으므로 Empty set이라고 나온다.
MySQL을 사용해보았다.
서버는 정말 환경 설치할게 무지하게 많다는 느낌이 든다..
컴퓨터 바꾸면 이 많은걸 또 어떻게 해야하나ㅎ..
당분간 바꿀일이 없어서 정말 다행이라는 생각이 든다..
다음 강의에서는 node.js에서 mysql을 사용하는 방법을 공부할 예정이다!
출처: 클래스101 / [웹 개발자 단과반 2교시] MySQL, Node.js 백엔드 속성 실무! - 개발자 사관학교
'Programming > Web Programming' 카테고리의 다른 글
zsh: command not found: mysql / Homebrew에서 다운받은 MySQL 경로 찾기, 실행하기 (0) 2023.05.13 Web 백엔드 (7) / Sequelize를 통해 MySQL을 Node.js와 연결하기 (0) 2023.05.13 Web 백엔드 (5) / HTML과 CSS 연결해주기 (0) 2023.05.12 Web 백엔드 (4) / API 만들기 - GET과 POST 방식(+Postman) (0) 2023.05.12 Web 백엔드 (3) / express, middleware, supervisor 사용해보기 (0) 2023.05.12