💡 다운로드하기 전에 내 장비의 버전을 체크하고 MySQL이 설치되어 있는지 확인해보자.
- 내 PC(장비)의 Windows 버전 체크


- 내 PC(장비)에 MySQL이 설치 되어있는지 (로컬)서비스에서 확인

- MySQL이 없다면 내 PC(장비)에는 MySQL이 설치되어있지 않았다는 것을 확인할 수 있다.
- 내 PC(장비)의 C 드라이브 > Program Files에 가서 MySQL 폴더가 있는지도 확인해본다. -> 없다면 MySQL이 설치되어있지 않았다는 것을 확인할 수 있다.
💡 MySQL 사이트로 가서 다운로드를 받아보자.
- https://www.mysql.com/ 웹 사이트 URL로 이동한다.

- DOWNLOADS 탭을 클릭한다.

- 마우스 스크롤을 조금 내려서 우리는 무료로 MySQL을 사용할 수 있게 MySQL Community (GPL) Downloads 를 클릭한다.

- MySQL Community Server 를 클릭하여 다운로드 받는다.

- Go to Download Page > 를 클릭한다.

- Windows (x86, 32-bit), MSI Installer 8.0.29 439.6M Download 를 클릭한다.

- No thanks, just start my download. 를 클릭한다.

- 브라우저 하단부에 설치파일이 다운로드 된다. 클릭하여 Installer를 실행한다.

- MySQL Installer 창이 뜨면 Default로 Developer Default로 되어 있는데, 우리는 Custom 하여 사용할 것이기때문에 Custom 을 클릭한다.

Available Products:에서 우리는 5가지를 설치해야하기때문에 하나씩 펼쳐서 해당하는 Product를 우측으로 옮긴다.(Products To Be Installed:로 이동시킨다.)
- MySQL Server 8.0.29 - X64 를 우측으로 이동시킨다.

- MySQL Workbench 8.0.29 - X64 를 우측으로 이동시킨다.

- Connector/J 8.0.29 - X86 을 우측으로 이동시킨다.

- MySQL Documentation 8.0.29 - X86 을 우측으로 이동시킨다.

- Samples and Examples 8.0.29 - X86 을 우측으로 이동시킨다. 그리고 Next 를 클릭한다.

- Execute 를 클릭한다.

- Microsoft Visual C++ 을 설치하라고 뜨는데, 동의함을 누르고 설치를 눌러준다.

- Execute 했던게 다 설치가 되었으니 Next를 누른다.

- 9번 이후에 말했던 5가지를 설치하기 위해 Excute 를 클릭한다.

- 무사히 모두 설치가 된 것을 확인하고 Next 를 클릭한다.

- Next 를 클릭한다.

- TCP/IP, Port:3306(이미 설치되어있다면 3307로 뜰 수 있다.), Open Windows Firewall ports for network access 를 확인하고 Next 를 누른다.

- MySQL의 고유 포트번호는 3306번 이다.
- 필드에서는 간혹 다른 포트번호를 사용하기도 한다.
(그렇다고 아무포트번호나 사용하는것은 아니고 약속된 포트번호인 0~ 1023 사이의 Well-Known Port 와 1024~ 2047 사이의 Vendor Port 외에 2048~ 65535 사이의 포트번호를 지정하여 사용한다.)
- Open Windows Firewall ports for network access 를 체크하면 윈도우 운영체제에서 자동으로 방화벽 InBound를 열어주는 것이고, 체크를 안하면 개발자가 수동으로 열어주거나 열어주지않을 수 있다.
- password의 복잡성(보안)을 위해 첫 번째를 선택하고 Next 를 클릭한다.

- MySQL의 Root Password:를 우리는 공부하는 단계이니 기억하기 쉽게 mymysql로 설정하고 Next 를 클릭한다.

- Root: 리눅스 운영체제의 최고 관리자를 의미한다.
- Administrator: 윈도우 운영체제의 최고 관리자를 의미한다.
- 여기에서 Add User로 유저를 추가할 수 있지만, 우리는 개발자가 될거고 개발자는 마우스로 GUI를 만지는 것보단 하드코딩으로 User 를 Add 할 것이다.
- MySQL 서버를 Windows 서비스로 구성할것이기때문에 첫 번째 체크박스를 체크하고, 두 번째 체크박스는 MySQL Server 를 윈도우 부팅할 때 자동으로 Start 할것인지 개발자가 수동으로 Start를 할것인지 지정하는것이라 우리는 체크 해둘것이다. 그리고 Next 를 클릭한다.

- Execute 를 클릭한다.

- Finish 를 클릭하면 첫 번째 환경설정이 끝난다.

- 두 번째 환경설정 시작화면이고 Next 를 클릭한다.

- 23번에서 지정했던 Root Password를 입력하고 Check를 클릭하고 위의 화면에서 Status에 Connection succeeded. 이 확인되면 Next 를 클릭한다.

- Execute 를 클릭한다.

- Finish 를 클릭한다.

- Next 를 클릭한다.

- 마지막으로 Start MySQL Workbench after setup 을 체크해제 한 후 Finish 를 클릭한다.

💡 MySQL이 제대로 설치 되었는지 확인하는 작업을 해야한다.
📢 첫 번째 방법
- 실행 창에서 services.msc 를 입력하고 확인 버튼을 누른다.

- 서비스 창에서 MySQL80 서비스가 있다면 제대로 설치되었다는 의미이다.

- MySQL80 서비스를 더블클릭해서 서비스 시작 유형을 자동 또는 수동 및 사용 안 함으로 변경할 수도 있다.

GUI로 서비스를 Start 및 Stop을 하는거 외에 명령프롬프트 창에서 하드코딩으로도 서비스를 실행 및 중지시킬수 있다.
- 실행 창에 cmd 를 입력하고 확인 버튼을 누른다. (관리자 권한으로 실행하기위해 Ctrl + Shift + Enter 로 cmd 를 실행한다.)


- net start 명령어로 현재 실행중인 서비스를 확인할 수 있다.(우리가 설치하여 자동으로 서비스 실행을 해놓았기때문에 MySQL80 서비스가 확인된다.)


- net stop 명령어로 MySQL80 서비스를 중지시켜보자.

- net start 명령어로 다시 MySQL80 서비스를 실행시켜보자.

📢 두 번째 방법
- 내 PC > 로컬 디스크 (C:) > Program Files > MySQL 폴더를 확인한다.


- bin 폴더 아래에서 mysql.exe 파일 위치를 알 수 있다. 이 파일이 있기때문에 해당 경로의 Path를 잡아주면 우리는 명령프롬프트 창에서 MySQL 을 사용할 수 있다.
- 내 PC > 로컬 디스크 (C:) > Program Files (x86) > MySQL 폴더가 있다.


- Connector J 8.0 폴더 안에는 자바와 MySQL을 연결시켜주는 Jar File이 들어있다.
- 폴더에서 숨겨져있는 파일을 보기위해 보기 탭을 누르고 숨김 항목을 체크하면 숨겨져있던 폴더를 확인할 수 있다.(ProgramData 폴더가 숨겨져있고, MySQL 폴더가 여기에도 있는것을 확인할 수 있다.)

이렇듯 나중에 MySQL을 깔끔하게 지우기위해서는 제어판에서 설치했던 순서의 역순서로 삭제를 진행하고, 방금 설명한 1, 2, 3번의 MySQL 폴더를 지워주면 된다.
(물론 레지스트리에서 지우는 방법이 제일 깔끔하지만, 잘못건드렸다가 돌이킬 수 없는 상황이 발생할 수 있기때문에, MySQL 을 제거할 때 이정도까지만 확인해서 지워주면 된다.)
💡 cmd(명령프롬프트) 창에서 MySQL 을 실행하여 간단하게 사용해보자.
- cmd 창을 실행해서 mysql을 치게되면 아래 화면이 뜨게된다.

- 윈도우 운영체제가 MySQL의 위치를 알 수 없기때문에 그러는데, 어디에서든 MySQL 을 사용할 수 있도록 환경 변수에 Path를 등록해줘야한다.
- MySQL 실행파일이 있는 bin 폴더까지의 경로를 Ctrl + C (복사 해둔다.)
- 경로: C:\Program Files\MySQL\MySQL Server 8.0\bin
- 실행 창에 환경 변수가 있는 시스템 속성 고급 탭으로 갈 수 있는 단어이다.


- 어느 누구나 사용할 수 있는 공통의 시스템 변수인 시스템 변수(S)의 Path를 편집한다.


- 새로 만들기(N) 을 누르고 위에 2번에 MySQL을 실행할 수 있는 경로를 붙여넣기 (Ctrl + V) 하고 Enter를 누른다.
- 이렇게 환경 변수를 잡아주게되면 운영체제가 MySQL의 위치를 알게되어 이제 cmd(명령프롬프트) 창에서 MySQL를 사용할 수 있게된 것이다.
- cmd(명령프롬프트) 창을 다시 실행하여 set path를 입력하고 Enter 키를 누른다.

- set path 명령어는 환경 변수로 잡혀있는 경로를 확인할 수 있는 명령어이다.
- mysql 명령어로 이제 아까와 다른 에러 문구가 나오는데, 어디서(위치)/누가(유저)/비밀번호 의 정보를 입력해야 mysql를 실행할 수 있게된다.

- 로그인을 하려면 3가지 정보가 있어야한다.
- IP:Port Number 및 DB 서버 계정, 비밀번호이다.
- IP:Port Number 는 url(도메인)을 입력하면 Name Server가 알아서 알맞는 IP 주소와 연결해준다.
(예를들면 자기자신의 도메인주소인 localhost를 Name Server가 127.0.0.1와 연결해준다.)
- localhost는 내 컴퓨터의 이름을 대명사로 만든것이다.
- MySQL 로그인할 때는 -h 주소 -u 유저명 -p password 를 같이 입력해줘야한다.
(다만 password는 보안상 다 보이기때문에 -p까지만 적고 Enter를 치면 다음 라인에서 비밀번호를 입력하게되면 '*' 표시로 뜨게되서 보안적으로 조금 도움이 된다.)



- 알맞게 정보를 다 입력하면 위 화면 문구가 뜨게되고 MySQL 을 드디어 사용할 수 있게된다.

- MySQL 에서 빠져나올 때는 exit 명령어로 빠져나온다.
💡 앞으로 MySQL 을 공부를 하기 위해 Sample Data 를 다운로드 한다.
-
https://github.com/swacademy/MySQL/blob/main/scott.sql 로 이동한다.
-
우측에 Raw 를 클릭한다.

- 마우스 우클릭을 하여 다른 이름으로 저장을 한다.

- 폴더 하나를 생성해서 아무 이름이나 준 다음 그 폴더 안에 .sql 파일을 내려받는다.

- sql로 만든 파일은 확장자가 .sql로 끝나기때문에 잘 확인해야한다.

💡 MySQL 의 몇 가지 명령어를 사용해보고 위에서 다운로드 받은 Sample Data 를 실행 시키자.
- 다시 MySQL 로 접속하자.

- show databases; 는 현재 몇개의 데이터베이스가 있는지 확인하는 명령어이다.

- use database명; 은 해당 database를 사용할 때 쓰는 명령어이다.

- show tables; 는 해당 데이터베이스에 어떤 테이블이 있는지 확인할 때 쓰는 명령어이다.

- 사용자 추가시 외부에서 접근 가능하도록 설정

- '%' 는 localhost 및 외부에서 접근이 가능하다는 의미이다.
- scott 유저에게 모든 권한을 부여할 때 쓰는 명령어이다.

- MySQL 에서 명령어를 사용했다면 마지막에 무조건 적용시켜줘야하는데 이 때 사용하는 명령어이다.

- 현재 누가(유저) 로그인 했는지 확인할 때 사용하는 명령어이다.

- 새로 생성한 scott 유저로 다시 로그인해보자.


- scott 유저로 로그인했기때문에 select user(); 명령어를 쓰면 scott@localhost가 뜨게된다.
마지막으로 새로운 데이터베이스를 생성하고 만들어놓은 샘플 데이터를 실행해보자.
- show databases; 로 현재 어떤 데이터베이스가 있는지 확인하고 mycompany 라는 데이터베이스를 생성한다.


- 생성한 mycompany 데이터베이스로 이동한다.(use mycompany;)

- sample data인 scott.sql 파일을 현재 데이터베이스에서 실행한다.

- 데이터베이스에 sample data가 잘 받아졌는지 확인해보자.


- sample data 는 위 화면의 경로에 위치한다.
우리는 MySQL 의 환경을 구축해서 간단한 명령어들을 사용해보았다.
💡 MySQL Workbench 를 사용해보자.
- MySQL Workbench 8.0 CE 를 실행한다

- 기본적으로 root 계정으로 생성되어있다.

- +버튼을 눌러서 Setup New Connection(새 커넥션)을 생성해보자.

- Connection Name 은 로컬에서 실행중인 MySQL Server를 사용하는 경우 'localhost_USER명'이라는 규칙으로 명명한다.

- 내 머신의 IP 를 지칭하는 대명사이다.

- 당연히 Username은 'scott'이다.

- Store in Vault... 을 클릭해서 비밀번호를 입력하면 Vault에 비밀번호가 저장되어 바로 로그인이 가능해진다.

- 데이터베이스명은 mycompany이기때문에 Default Schema는 mycompany이다.

- 마지막으로 Test Connection 을 클릭한다음 Successfully... 라는 문구가 뜨면 정상적으로 Connection이 생성된것이다. 그리고 Ok를 눌러 MySQL을 생성한다.


- root 유저 옆에 scott 유저의 connection이 생긴것을 확인할 수 있다.
- scott 유저의 connection 카드모양을 더블 클릭하면 Workbench가 실행된다.

- 우리는 하단부에 Schemas를 눌러서 mycompany라는 데이터베이스를 확인할 수 있다.
💡 MySQL 환경 구축을 해봤다면 이번에는 MySQL 을 제거해보자.
- 실행창에서 appwiz.cpl 을 입력하여 제어판으로 이동한다.

MySQL 설치했던 순서의 역순으로 프로그램을 지우자.
- (1) MySQL Examples and Samples 8.0 을 지운다.

- (2) MySQL Documents 8.0 을 지운다.

- (3) MySQL Connector J 를 지운다.

- (4) MySQL Workbench 8.0 CE 를 지운다.

- (5) MySQL Server 8.0 을 지운다.

- (6) MySQL Installer - Community 를 지운다.

📢 수동으로 잔상이 남아있는지 체크해서 남아있다면 지워준다.
8-1. C:\ProgramData 에 MySQL 이 있기때문에 폴더채로 지워준다.

8-2. C:\Program Files (x86) 에는 MySQL 폴더가 없다.(체크)

8-3. C:\Program Files 에는 MySQL 폴더가 역시 있기때문에 폴더채로 지워준다.

8-4. C:\Users\mzc\AppData\Roaming 에도 MySQL 폴더가 있기때문에 폴더채로 지워준다.

8-5. 윈도우 스냅인 관리 도구 중 services.msc 를 입력하여 서비스(로컬)에 실행될 수 있는 서비스 목록을 조회한다.


- MySQL80 서비스가 지워져있는 것을 확인할 수 있다.
📢 데이터를 지울 때 잔상이 남지않고 가장 깔끔하게 지우는 방법은 레지스트리 편집기를 이용하여 데이터를 지우는 것인데, 자칫 잘못 건드렸다가 복구할 수 없는 상황이 올 수 있기때문에 레지스트리를 건드리는 방법을 제외하고 MySQL 폴더가 있을만한 곳으로 직접가서 지워주었다.