본문 바로가기
AWS

[AWS EC2] DB서버 구축 및 PHP와 연결

by Ju_hye 2020. 3. 6.

이전 포스팅에서 AWS EC2인스턴스에 아파치 서버를 구축하고 php와 연동하는 작업을 했습니다.

이제 여기에 MySQL로 DB서버를 만들고 PHP와 연결해보겠습니다.

 

일단 mysql을 설치해줍니다. (필요하다면 client도 설치하세요)

sudo apt-get install mysql-server

설치가 완료됐다면 이제 외부에서 데이터베이스에 접속할 수 있게 만드는 작업을 시작합니다.

일단 루트계정으로 접속합니다.

sudo mysql -u root -p

현재는 비밀번호가 설정되어있지 않으니 엔터를 치시면됩니다. 만약 루트계정 비밀번호가 있다면 입력해주세요.

이제 외부에서 접속할 계정을 만들고 권한을 주겠습니다.

## 오직 내 PC안에서만

create user 'sample'@'localhost' identified by '1234';

## 현재 해당 계정을 가지고 있는 PC의 IP주소 를 통해서만 접근 허용

create user 'sample'@'현재 PC의 IP주소' identified by '1234';

## 다른 모든 PC에서 접근 허용

create user 'sample'@'%' identified by '1234';

외부에서 접근 가능하게 하려면 마지막 라인처럼 계정을 만들어주시면 됩니다.

use mysql;

## 권한부여 (위에서 생성한 유저에 부여하면 된다)
GRANT ALL PRIVILEGES ON *.*TO 'sample'@'%';
FLUSH PRIVILEGES;

## 권한 확인(안보인다면 mysql 나갔다가 다시 들어와서 확인)
show grants for '사용자'@'접속위치';

exit;

여기서는 모든 DB및 테이블에 대한 권한을 주었지만 특정 테이블이나 DB에만 권한을 주어도 됩니다. :)

 

이 단계에서는 아직 외부접속이 안됩니다. mysql 설정파일을 수정하기 위해 아래의 명령어를 입력해주세요.

cd /etc/mysql/mysql.conf.d
sudo nano mysqld.cnf

나노 에디터로 파일이 열리면 bind-adress를 아래와 같이 수정해줍니다. (default는 127.0.0.1)

bind-address = 0.0.0.0

 

나노에디터를 나와서(ctrl+x) mysql 서비스를 재시작합니다.

sudo service mysql restart

 

 

이제 AWS EC2 보안그룹 페이지 설정으로 가서 mysql 허용 IP를 추가해줘야합니다.

UI가 조금 바뀌었네요.

설정을 편집할 보안그룹을 체크하면 인바운드 규칙을 편집할 수 있는 창이 뜹니다. Edit inbound rules를 눌러주세요.

 

Add rule 버튼을 누르면 새 Inbound rule이 추가됩니다. TypeSource type을 위와 같이 해주신 뒤 아래 주황색 버튼(Save rules)을 클릭하시면 설정이 저장됩니다.

 

외부접속이 가능한지 간단하게 파이선을 이용해서 확인해보겠습니다. 일단 테스트용 테이블을 만듭니다.

create table temp_tb(
	id		int primary key not null auto_increment,
    temp	integer,
	dt		timestamp not null default now()
);

아래는 파이선코드입니다. 파이선으로 db를 연결하는 내용에 대해서는 추후 포스팅할 계획입니다.

import serial
import pymysql

db = pymysql.connect(host='IPv4퍼블릭IP', port=3306, user='sample', passwd='password', db='blog', charset='utf8')

cursor = db.cursor()
sql = "INSERT INTO temp_tb(temp) values(18);"
cursor.execute(sql)
db.commit()

위의 코드를 .py 확장자로 저장하고 터미널에서 실행시켜주세요. ex) python blog.py

 

무사히 들어갔습니다.:)