개요
리눅스 환경에서 MySQL 서버를 구동하는 방법을 알아보자
구현 환경으로 AWS EC2 우분투 인스턴스를 생성한다.
해당 인스턴스에 연결 후 MySQL 기반의 DB 서버를 구현한다.
AWS EC2 인스턴스 생성
- AWS Management Console에 로그인.
- EC2 서비스 → "인스턴스 시작".
- AMI 선택: Ubuntu LTS (최신 버전 추천).
- 인스턴스 유형: 일반적으로 t2.micro(프리티어).
- 키 페어 선택 또는 생성: SSH 접속용 PEM 키.
- 보안 그룹(인바운드 규칙) 설정
패키지 설치
생성한 인스턴스에 연결을 진행한다. 이후 MySQL 서버 구동을 위한 패키지를 설치해 준다.
1. 패키지 업데이트
sudo apt update && sudo apt upgrade -y
2. MySQL 서버 설치
sudo apt install -y mysql-server
3. MySQL 보안 설정(선택)
sudo mysql_secure_installation
비밀번호 설정, 익명 사용자 삭제, 테스트 데이터베이스 제거 등을 수행한다.
이는 선택 사항으로 토이 프로젝트를 진행할 것이라면 생략해도 된다.
4. 루트 사용자 로그인
sudo mysql -u root -p
DB 및 테이블 생성
1. 데이터베이스 생성
CREATE DATABASE "데이터 베이스 이름 입력";
2. 사용자 생성(선택)
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%';
FLUSH PRIVILEGES;
- 서버 등에서 DB에 연결을 진행할 때 사용할 사용자를 생성한다.
- @뒤에 접속을 시도할 서버의 IP를 기재해 준다, '%'를 기재하면 와일드 카드이다.
- GRANT를 통해 원하는 권한을 db, 테이블을 구분하여 해당 유저에 부여할 수 있다.
- 마찬가지로 아스트리크(*)를 사용하면 와일드 카드이다.
3. 테이블 생성
CREATE TABLE item (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(80) NOT NULL,
description VARCHAR(200)
);
추가 설정
1. MySQL의 외부 접속 활성화
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address값을 0.0.0.0으로 변경해 준다(모든 IP주소로 부터 접속 허용)
2. MySQL 서버 실행
sudo systemctl start mysql
3. MySQL 서버 재시작
sudo systemctl restart mysql
4. MySQL 서버 상태 확인
sudo systemctl status mysql
(참고) MySQL 서버를 자동으로 실행 설정
sudo systemctl enable mysql
서버 재부팅 시 MySQL이 자동으로 실행되도록 설정한다.
트러블 슈팅
1. 포트가 이미 사용 중인 경우
MySQL은 기본적으로 3306 포트를 사용한다, 포트가 이미 사용 중이라면 충돌이 발생할 수 있다.
이미 MySQL이 실행 중인 경우 중복 실행 시도하지 않기
필요시 포트를 변경하려면 MySQL 설정 파일 (/etc/mysql/mysql.conf.d/mysqld.cnf)에서 port를 변경한다.
2. MySQL이 실행되지 않을 때
- 로그 파일 확인
sudo cat /var/log/mysql/error.log
- MySQL 초기화 (필요 시)
sudo mysqld --initialize
- MySQL 재설치
sudo apt purge mysql-server
sudo apt install mysql-server