이전 글에서 AWS EC2를 통해 우분투를 서버로 설치하였고, 우분투에 웹 서버를 구축하였다. 이번 실습에서는 MySQL를 설치하고 모든 권한을 가진 유저를 생성하여 외부에서도 DB에 접근할 수 있도록 작업을 해볼 것이다.
이번 실습에서 새롭게 사용하는 툴은 'Toad for MySQL'이다. teraterm의 터미널에서는 sql작업을 하기가 어렵기 때문!
목차
[리눅스 명령어 사용 tip]
* tab : 접근하려는 경로에 겹치는 문자가 없다면 추측가능한 파일명/폴더명을 찾아서 자동완성해준다.
* 터미널에 복붙하고 싶은 경우 내용을 복사해서 터미널에 마우스 오른쪽 클릭을 하면 된다.
[실습에서 사용하는 tool]
웹 서버에 접근할 수 있는 도구 : teraterm
웹 서버의 데이터베이스에 접근하는 도구 : Toad for MySQL
EC2에 mySQL install
sudo apt update
: 업데이트가 필요한 내역들을 리스트업 해줌
sudo apt install mysql-server
: mysql 설치
명령어 실행 후 mysql이 설치 되었는지 확인하려면 먼저 루트 디렉토리로 이동한다. cd /
루트 디렉토리에서 ls -l
명령어를 사용하면 etc폴더가 있는데 그 안에서 새롭게 설치된 내용을 확인할 수 있다. cd etc
▼ etc폴더에서 ls명령어 실행
▼ mysql 폴더에서 ls명령어 실행
mysql.conf.d 디렉토리는 mysql의 실제 환경 파일을 담고있다. 눈여겨보자👀 이따 다시 등장하기 때문이다.
sudo mysql -u root -p
: root유저로 mysql 접속하기
패스워드를 정하지 않은 경우에는 패스워드를 적는 란이 나올 것이다. 패스워드를 터미널에 입력할 때 화면에 뜨지 않기 때문에 신중하게 입력하여 세팅하도록 한다.
▼ 데이터베이스 스키마 확인
show databases;
mysql을 제외한 나머지는 meta데이터이기 때문에 건드리지 않고 실습에서는 mysql만 사용하도록 한다.
▼ mysql 데이터베이스에 접속
use mysql;
: mysql 데이터베이스에 접속
성공적으로 접속한 경우 Database changed를 확인할 수 있다.
show tables; 명령어로 mysql 데이터베이스에 있는 테이블들을 살펴보도록 하자.
mysql에 user생성하기
mysql에서 여러 스키마들을 사용할 수 있는 권한을 가진 유저를 생성해본다. 그리고 해당 유저가 외부에서 DB에 접속하여 작업을 하는 실습하겠다. 이 작업을 해줌으로써 우리는 다음부터는 root유저로 접속하지 않고 생성한 유저로 접속하도록 한다.
유저 생성은 create 명령어로 실행할 수 있다.
주소만들기
create user '유저명'@'localhost'
: 나만 접속
create user '유저명'@'%'
: 모든 사람이 접속 가능
실습에서는 %를 사용한다. 사실 내가 localhost로 입력했다가 이후 실습에서 아주 골칫거리였다. 처음에 수업을 들을 때 나만 접속, 모든 사람이 접속 이라는 말 자체가 잘 흡수가 안되어서 아차 했지만 큰 문제가 되지 않겠거니 하고 그냥 진행했다. 모든 사람이 접속이라는 의미는 우리의 실습목표와 같이 외부에서 다른 사용자들도 접근할 수 있도록 한다는 의미이기 때문에 반드시 %로 외부에서 유저가 접근할 수 있게 한다.
주소에 비밀번호 부여하기
create user '유저명'@'%' IDENTIFIED BY '비밀번호';
권한 부여하기
grant all privileges on *.* to '유저명'@'%';
: 모든 권한을 부여
flush privileges;
: MySQL에 변경사항을 적용하기
show grants for '유저명'@'%'; : 유저를 생성할 때 세팅한 내용을 이미지처럼 보여준다.
현재 GRANT ALL로 모든 권한이 cloud유저에 부여된 것을 볼 수 있다.
exit로 mysql을 종료할 수 있다.
아까 확인했던 mysql.conf.d 폴더 안에 있는 mysqld.cnf파일에 저장된 세팅 내용을 변경하기 위해 해당 경로로 이동한다.
cd /etc/mysql/mysql.conf.d
ls명령어를 실행해보면 mysqld.cnf 파일이 디렉토리 안에 저장되어 있다. nano 에디터로 mysqld.cnf파일을 열어보면 아래의 이미지처럼 세팅 내용을 확인할 수 있다.
sudo nano mysqld.cnf : 세팅 내용을 변경하기 위해서는 루트 권한으로 접속해야한다!
초기의 bind-address는 127.0.0.1로 설정되어 있지만 실습에서는 외부에서 오는 모든 접근을 허용하기 때문에 0.0.0.0으로 변경해준다. 세팅을 변경해줌으로써 모든 사람에게 접속 권한이 부여된다.
세팅 값을 변경한 경우에는 다시 재시작하여 변경 내용을 적용해주어야 한다.
sudo service mysql restart
: mysql 재시작
외부에서 mysql에 접근하기 위해 프로토콜을 생성해야 한다. mysql 포트번호는 3306인데, 이 포트를 열어놓지 않으면 외부에서는 mysql에 접근할 수 없다. 그렇기 때문에 아래의 이미지와 같이 AWS -> 네트워크 및 보안 탭에서 보안 그룹에서 인바운드 규칙을 설정하여 mysql프로토콜을 추가한다.
▼ AWS 네트워크 및 보안의 보안 그룹
▼ 인바운드 규칙편집에서 규칙을 추가
Toad로 mySQL 접속
Toad for MySQL에 접속하여 메뉴바에 connect를 누르면 아래의 창이 뜨게 된다.
- hostname : ip주소
- userName : 유저명
- password : 유저 패스워드
- database: mysql (현재 접속한 DB명이 mysql이다.)
현재 pc에 mysql이 접속되어 있으면 Host에 localhost로 접근이 가능하다.
그러나 실습에서는 클라우드의 외부 저장소에 mysql을 설치한 것이기 때문에 인스턴스 ip로 적어주어야 한다.
위와 같이 정보를 적어주었다면 connect한다.
▼ SQL쿼리 실행해보기
메뉴바의 Edit탭을 눌러서 외부 저장소와 connect된 것을 확인해본다. SQL쿼리를 여러 줄 작성한 경우 f9를 누르면 한 줄만 실행할 수 있다.
* 이때 now()함수를 실행해도 현재 시간과 일치하지 않는 이유는 AWS서버가 미국 버지니아에 위치하고 있기 때문이다.
'DevOps > Cloud' 카테고리의 다른 글
[AWS] PHP설치, RDS 인스턴스 생성 (0) | 2021.06.08 |
---|---|
[Cloud]네트워크 기초 (0) | 2021.05.26 |
[AWS] 우분투 리눅스 기본 명령어 (2) | 2021.05.04 |
[AWS] teraterm을 이용하여 EC2 인스턴스 사용 (0) | 2021.04.26 |
[AWS] EC2 인스턴스 생성 (0) | 2021.04.14 |
댓글