💡 들어가기 전 VirtualBox 환경에 대한 유의사항
VirtualBox 프로그램 사용 시 충돌 방지를 위한 확인해야할 사항
- Windows 키 + R 으로 실행창을 열은다음 appwiz.cpl 을 입력하고 확인을 클릭한다.

- 제어판이 실행되면 좌측 상단에 Windows 기능 켜기/끄기를 클릭한다.

- Hyper-V 가 체크가 되어있는지 체크해제가 되어있는지 확인한다.

- Windows 기능에 체크가 되어있으면 기능이 실행되고 있는것이고 체크가 안되어있다면 기능이 실행되고있지않다는 의미이다.
- Hyper-V가 체크되어있으면 VirtualBox와 충돌이 난다.(Hyper-V는 microsoft사의 Virtual PC를 사용할 때 체크를 한다.)
- Oracle사의 virtualbox를 사용할 때는 체크를 해제해야한다.
💡 기존에 만들어두었던 Ubuntu Server Base 환경을 MySQL DB Server 로 사용하기위해 복제를 하자.
- 리눅스 환경을 설치해두었던 Ubuntu Server Base 환경에서 마우스 우클릭을 하고 복제를 클릭한다.

- 복제를 할 때, 이름은 나중에 바꿔도 되지만, 경로와 특히 MAC 주소 정책 부분에 모든 네트워크 어댑터의 새 MAC 주소를 생성에 선택해야한다.

- 복제를 하면 랜카드의 머신끼리의 주소가 같아지기때문에 복제를 할 때는 새 MAC 생성을 선택해야한다.
- 네트워크인 NIC(Network Interface Card) 의 Serial Number를 다르게 한다는 의미이다.
- 다른 머신에 같은 랜카드가 꽂혀있을 수는 없기때문이다.
- 복제 방식에서 완전한 복제를 선택한다.

- 완전한 복제는 값 자체를 복제하는것이기때문에 Server에 저장된 모든 것을 복제하는것이다.
- 연결된 복제는 주소만 복제하는 것이다.

- 복제를 클릭하면 위의 화면과 같이 똑같은 Server가 복제가 된다.
- 복제한 Server 를 우리는 MySQL DB Server 로 사용할것이기때문에 설정에서 이름을 'MySQL DB Server'로 변경한다.

💡 Linux(Ubuntu) 환경에서 MySQL을 설치해보자.
- MySQL DB Server 를 실행하면 로그인하라고 화면이 뜨는데, Linux를 설치할 때 만들었던 username과 password를 입력하면 된다.

- 현재 위치에서 cd(change directory) 명령어를 이용해서 root 아래 tmp 디렉터리로 이동한다.($ cd /tmp)

- wget 명령어로 repo.mysql.com 사이트로 접근해서 다운로드를 받아보자.

- 리눅스 환경에서 wget 명령어로 원하는 mysql 버전을 성공적으로 가져오면 위의 화면처럼 뜨게된다.

- 위의 화면은 리눅스 버전에서 wget 명령어로 mysql을 다운로드 받는 것(CLI)을 윈도우 환경에서 GUI로 보여주고 있는 화면이다.
- deb: debian이라는 의미이고, ubuntu는 debian 계열에서 파생된 배포판 중 하나이다.
- 리눅스 환경에서 ls(list) 명령어로 잘 다운로드 받았는지 확인해보자.

- $ sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb 명령어로 다운로드 받은 파일을 설치하자.

- 위의 명령어를 입력하고 Enter를 치면 [sudo] 관리자인지 확인하기위해 password를 입력하라는 문구가 뜬다.(password를 입력하면 보라색 화면으로 바뀐다.)
- Ok를 선택한다.


- 내 머신(PC)이 update해야하는 목록중에
http://repo.mysql.com/...
이 있는지 확인한다.

- $ sudo apt install mysql-server 를 입력한다.

- 설치 중간에 계속 설치할건지 물어보는데, 우리는 계속 설치할 것이기때문에 Y 를 입력하고 Enter 를 쳐도되고 Y가 대문자이면 default 값이기때문에 아무것도 입력하지 않고(공백) Enter 를 쳐도된다.

- root password 를 입력하고 Enter 를 친다.

- 다시 root password 를 물어보는데 똑같이 입력하고 Enter 를 친다.

- Use Strong Password Encryption (RECOMMENDED) 를 선택하고 Enter 를 친다.



- $ apt policy mysql-server 명령어로 mysql이 installed 되었는지 확인한다.

- $ systemctl status mysql 명령어로 서비스 실행중인지 확인한다.

- mysql 서비스가 현재 실행중이면 active (runnning) 라고 뜬다.
- 윈도우 환경에서 실행창에 services.msc 명령어로 들어갔던 서비스 창에서 MySQL80 서비스가 실행중인지 확인했던것과 같다.

systemctl 명령어
- systemctl status [서비스명] : 해당 서비스의 현재 상태를 확인하는 명령어이다.
- systemctl start [서비스명] : 해당 서비스를 실행하는 명령어이다.
- systemctl stop [서비스명] : 해당 서비스를 중지하는 명령어이다.
- systemctl enable [서비스명] : 운영체제가 메모리에 로드될 때 해당 서비스를 실행하는 명령어이다.
- mysql 서비스를 중지해보고 다시 실행해보자.

- root password 를 입력하여 맞으면 ==== AUTHENTICATION COMPLETE ==== 가 뜬다.

- mysql 서비스 상태확인했더니, inactive 라고 뜨는것을 확인할 수 있다.(q 로 빠져나온다.)


- mysql 서비스 실행하고 서비스 상태를 확인했더니, 이번엔 다시 active (running)로 바뀐 것을 확인할 수 있다.
- 앞으로도 Linux 환경을 실행할 때마다 계속 mysql 서비스를 실행상태로 두기 위해서 $ systemctl enable mysql 명령어를 사용하자.

💡 Linux 환경에 설치한 MySQL Server root 비밀번호 설정
- $ sudo mysql_secure_installation 명령어를 입력하고 root 의 비밀번호를 입력한다.

- 첫번째 물음은 VALIDATE PASSWORD PLUGIN을 사용할지 물어본다.
- 개발용/테스트 장비에서 MySQL Server를 설치할 때는 비밀번호가 길면 귀찮으니, 아무키나 입력해서 플러그인을 비활성화 하는 것도 좋지만, production용 라이브 장비라면 y 또는 Y 를 입력해서 안전한 비밀번호를 사용하는게 좋다.

- 비밀번호의 강도를 정하는 것인데, 우리는 공부를 하는 단계이니 제일 낮은 단계인 0 을 입력한다.

- 우리는 현재 root 의 비밀번호를 바꾸지 않을것이기때문에 n 을 입력한다.

- anonymous users 를 삭제할지 물으면 Y를 입력해서 삭제해 준다.

- 외부에서 root 계정으로 접근을 허용할지 묻는데, 다른 서버(외부)에서 접근할 수 있도록 n 을 입력한다.

- Test DB를 삭제할지 물으면 필요할지 필요없을지 당장에는 모르기때문에 일단 필요한걸로 n 을 입력한다.

- 마지막으로 privileges table을 reload 할지 물으면 y를 입력해서 reload 해준다.

Linux 환경에서 설치된 MySQL을 간단히 사용해보자.
- root 유저로 비밀번호를 입력해서 mysql 을 사용한다.

- 어떤 데이터베이스가 있는지 show databases; 로 확인한다.

- mysql 데이터 베이스로 이동한다.(use mysql;)

- 어떤 테이블이 있는지 확인한다.(show tables;)

- select 문을 사용하여 user 테이블에 있는 user와 host 정보를 가져와보자.

- 마지막으로 mysql을 다 사용했다면 exit 명령어로 mysql을 빠져나오자.

이렇게해서 Linux 환경에서 MySQL을 설치해서 간단한 명령어를 사용해보았다. 다음 게시글에서는 윈도우 환경에서 리눅스 환경에 원격 연결하는 방법을 게시하겠다.