저번시간까지 리눅스 기초 명령어들의 사용법에 대해 알아보았습니다.
이번 시간에는 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가 생성된것을 확인할 수 있습니다.
'AWS' 카테고리의 다른 글
AWS RDS를 이용하여 DB 서비스 구축 (0) | 2021.06.01 |
---|---|
AWS 웹서버 구축을 위한 php설치 및 apache-php연동 (0) | 2021.06.01 |
AWS EC2 사용을 위한 리눅스 기초 명령어 학습3 (0) | 2021.05.04 |
AWS EC2 사용을 위한 리눅스 기초 명령어 학습2 (0) | 2021.05.04 |
AWS EC2 사용을 위한 리눅스 기초 명령어 학습+아파치 설치 (0) | 2021.04.15 |