저번시간까지 리눅스 기초 명령어들의 사용법에 대해 알아보았습니다.

이번 시간에는 EC2에 MySQL을 설치해보겠습니다. 데이터베이스를 설치함으로써 외부사용자가 EC2의 우분투 환경에 설치된 데이터베이스에

접근하여 데이터를 추가/삭제/수정 등의 작업을 할 수 있게됩니다.

 

아파치로 간단한 웹서버를 구축했고 이제 MySQL과 PHP를 설치하여 APM(Apache Php MySQL)을 구성해보겠습니다.

 

MySQL설치

먼저, 패키지를 업데이트, 업그레이드 해줍니다. 어떤 패키지를 깔더라도 꼭 습관처럼 해주는게 좋습니다.

sudo apt-get update

sudo apt-get upgrade

 

이제 아래 명령어로 MySQL을 설치합니다. 중간에 y/n 옵션이 뜨게되면 y를 누르면 됩니다.

 

설치완료

 

루트 디렉토리에서 etc디렉토리로 가보면 패키지가 설치되었음을 확인할 수 있습니다.

이제 mysql에 접속해보겠습니다. 최초 루트계정으로 접속하기위해 아래 명령어를 입력합니다.

비밀번호는 절대 까먹으시면 안됩니다.. 많이 곤란해질수도...

show databases;를 입력해보면 아래와 같이 초기 디폴트 db가 구성되어있습니다.

저희는 mysql 데이터베이스를 사용합니다.

use mysql; 을 입력하여 mysql 데이터베이스로 이동합니다.

이제 root 유저가 아닌 새 유저를 생성하여 db에 접근해보도록 하겠습니다.

작업 유저를 따로 생성하여 mysql의 작업을 진행한다고 생각하면 됩니다.

 

이제 새 유저를 생성해보겠습니다. 아래 명령어로 유저를 생성해주세요.

오타, 그리고 입력내용을 까먹지 않도록 주의합니다.

 

CREATE USER '아이디'@'로컬/외부 접속' IDENTIFIED BY '비밀번호';

꼴로 작성해주시면 되는데,

만약 CREATE USER 'JOW1025'@'localhost' IDENTIFIED BY 'jow1025'; 로 작성한다면, 

유저 이름: JOW1025

로컬/외부접속 여부: 로컬에서만 접근(외부에서 db접근 불가)

비밀번호: jow1025 가 되고

모든 외부접속을 허용하려면 localhost-> %으로 바꿔주시면됩니다. 저희는 아래꼴로 작성합니다.

CREATE USER 'JOW1025'@'%' IDENTIFIED BY 'jow1025';

 

로컬에서만 db를 다룬다면 우분투에서의 이 작업들이 무의미하므로 외부접속을 허용할 수 있도록합니다.

저는 아이디와 비밀번호를 'cloud'로 통일했습니다.

이제 생성한 계정에 권한을 부여할 차례입니다. 저희는 생성한 계정을 root계정처럼 모든 권한을 부여받아 사용할 것입니다.

어떠한 제한없이 데이터베이스의 모든 기능을 사용할 수 있게됩니다.

 

아래 명령어를 입력합니다.

GRANT ALL PRIVILEGES ON *.* to 'cloud'@'%'; (cloud는 저의 아이디입니다.)

 

아래 명령어로 변경내용을 즉시 적용시켜줍니다.

FLUSH PRIVILEGES;

권한이 잘 설정되었는지 확인해봅니다.

권한에 대한 내용은 메타데이터로 저장되어있고 아래 명령어를 통해 권한이 잘 설정되었는지 확인할 수 있습니다. 

show grants for 'cloud'@'%'; (cloud는 아이디 이름)

설정이 끝났고, exit명령어로 탈출합니다.

이제 실제로 외부에서 이 db에 접근할 수 있도록 mysql의 config파일을 수정해야합니다.

루트 디렉토리-> etc디렉토리->mysql디렉토리-> mysql.conf.d디렉토리로 이동한 뒤 mysqld.cnf파일을 수정합니다.

 

스크롤을 조금 내리다보면 bind-address부분이 있고, 디폴트로 127.0.0.1(본인 ip)로 지정되어있는데 이 경우 로컬환경에서만 db접속을 허용하는 것이므로 아래 문장을 추가하여 모든 외부접속을 허용한다고 선언해줍니다.

bind-address=0.0.0.0

 

변경사항을 적용했으니 mysql을 재시작해줍니다.

sudo service mysql restart

이제 외부 접속을 테스트 해보겠습니다.

 

EC2 콘솔창-> 왼쪽 배너 [네트워크 및 보안]- 보안그룹으로 이동한 뒤 인바운드 규칙 편집에서

MYSQL/Aurora의 유형을 위치무관으로 설정한뒤 추가해줍니다.

 

이제 mysql 툴 (워크벤치, 토드 등)을 실행해봅니다. 

저는 워크벤치가 있어서 workbench로 실행해보겠습니다.

 

워크벤치 홈 화면 중간에 MySQL Connections의 +버튼을 클릭합니다.

Connection Name은 자유롭게 작성하시면됩니다. 저는 mysql이라고 작성했습니다.

Hostname의 ip는 AWS 콘솔창-> EC2에서 해당 인스턴스의 퍼블릭 IPv4주소를 복붙해서 넣어주면됩니다.

Username은 아까 우분투에서 만든 계정 아이디를 작성하면되고 password도 아까 작성한 비밀번호를 그대로 입력합니다.

이 상태에서 Test Connection 버튼을 클릭했을 때 성공적으로 완료가 되어야합니다.

 

연결에서 에러가 났다면 우분투에서 mysql 유저 계정을 생성하고 권한을 부여하는 명령어 단계에서 오류가 난 것입니다. 처음부터 다시 해보시길바랍니다. ( 저도 다시했습니다....)

 

쿼리창에서 show databases;를 입력해봅니다. 잘 뜨는 것을 확인할 수 있습니다.

 

이제 워크벤치에서 데이터베이스를 하나 생성한 뒤 우분투에서 연동이 되었는지 확인해보겠습니다.

저는 jow1025라는 데이터베이스를 하나 생성했습니다.

이제 우분투에서 확인해보겠습니다. 

워크벤치에서 추가한 jow1025라는 이름의 db가 생성된것을 확인할 수 있습니다.

 

+ Recent posts