저번 포스팅에 이어서 이번 포스팅은 이전 포스팅에서 생성한 VM 인스턴스(CentOS 기준)에 MySQL을 설치하는 방법에 대한 포스팅이다.
목차는 아래와 같다.
- 오라클 클라우드 VM 인스턴스 Port 설정
- CentOS 방화벽 설정
- MySQL 설치
1. 오라클 클라우드 VM 인스턴스 Port 설정
인스턴스에 DB를 설치하고 외부에서 DB에 접속하기 위해 MySQL이 사용하는 기본포트인 3306 포트를 인스턴스 VCN 보안 목록에서 허용해줘야 한다.
우선 메뉴 > 인스턴스 화면으로 이동 후 기본 VNIC 항목 하위의 서브넷을 클릭하여 서브넷 세부정보 화면으로 이동한다.
서브넷 세부정보 화면에서 Default Security List 를 클릭하여 해당 서브넷의 보안목록 세부정보 화면으로 이동 후 수신 규칙 추가 버튼을 클릭하여 수신규칙을 아래와 같이 추가한다.
이번 포스팅에서는 소스 CIDR 을 0.0.0.0/0, 소스포트 범위를 모두로 지정하여 외부에서 모두 3306 포트로 DB에 접속할 수 있게 설정했다. 특정 IP만 접근하도록 설정하고 싶다면 위 소스 CIDR 에 IP를 조정하고 특정포트만 접속할 수 있도록 하고 싶다면 소스 포트 범위를 설정하면 된다. 입력을 마치고 수신규칙추가를 클릭하면 포트 허용 설정은 완료된다.
2. CentOS 방화벽 설정
클라우드 네트워크 포트 설정 뿐만 아니라 CentOS 방화벽도 3306 포트 허용을 설정해줘야 한다. 터미널(Mac OS 기준) 실행시키고 VM 인스턴스에 SSH 원격접속을 한 뒤 3306 포트 허용을 위해 아래와 같이 명령어를 실행시킨다.
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
정상적으로 허용이 됐는지 확인을 위해서 아래의 명령어를 실행시켜서 현재 허용되어 있는 port 목록을 확인해본다.
# 방화벽 실행상태를 확인하는 명령어
systemctl status firewalld.service
# 만약 실행상태가 active(running)이 아니라면 아래의 명령어를 실행시켜서 활성화
sudo systemctl start firewalld
sudo systemctl enable firewalld
# 허용된 port의 목록을 표출하는 명령어
sudo firewall-cmd --list-ports
3. MySQL 설치
이제 VM 인스턴스에 MySQL을 설치할건데 yum Repository에 MySQL이 없기 때문에 아래 링크에서 설치할 MySQL Repository를 확인한다.
1) MySQL Repository 추가
https://dev.mysql.com/downloads/repo/yum/
yum 으로 설치할 수 있는 MySQL Repository Package 목록을 확인할 수 있는 링크이다.
이번 포스팅에서는 mysql80-community-release-el7-7.noarch.rpm 으로 진행하였다.
아래 명령어를 실행시켜서 MySQL Repository를 추가한다.
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
2) MySQL 설치
Repository를 추가후 아래 명령어를 실행하여 MySQL을 설치한다.
sudo yum install mysql-server
설치가 완료되면 아래 명령어를 실행하여 잘 설치가 되었는지 확인해본다.
mysql --version
정상적으로 설치가 된 것을 확인할 수 있다.
3) MySQL 실행
아래 명령어를 실행시켜서 MySQL을 실행하고 인스턴스가 재부팅 되더라도 자동 실행되도록 설정한다.
systemctl start mysqld
systemctl enable mysqld
# MySQL 상태확인
systemctl status mysqld
4) root계정 비밀번호 확인 및 수정
MySQL 설치는 완료되었고 추가적으로 MySQL 계정 생성 및 DB 생성까지 진행한다.
MySQL 초기 설치시 임시비밀번호가 부여되는데 아래 명령어를 차례로 실행하여 임시비밀번호를 확인하고 root계정으로 접속하여 비밀번호를 수정한다.
# 임시비밀번호 확인
grep 'temporary password' /var/log/mysqld.log
# root 계정으로 접속
mysql -u root -p
# root계정 비밀번호 수정
alter user 'root'@'localhost' identified by '비밀번호';
비밀번호는 대소문자, 숫자, 특수문자가 각각 1개씩 8자 이상으로 구성해야 하고 비밀번호도 싱글쿼티션('') 안에 넣어서 입력한다.
5) DB 생성 및 사용자 생성
root 계정의 host가 localhost이기도하고 root계정을 외부에서 원격으로 접속하는건 보안상 좋지 않으므로 외부에서도 MySQL이 가능한 계정을 추가적으로 생성하고 DB를 생성한다.
-- DB 생성
CREATE DATABASE DB명 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 사용자 계성 생성
CREATE USER '사용자명'@'%' IDENTIFIED BY '비밀번호';
-- DB에 대한 권한 부여
GRANT ALL PRIVILEGES ON DB명.* TO '사용자명'@'%' WITH GRANT OPTION;
flush privileges;
6) 외부접속테스트
설치는 모두 끝이 났으니 외부에서 접속이 잘되는지 테스트를 진행한다.
DBeaver를 사용해서 Test Connection 을 시도하였다.
ServerHost : VM 인스턴스 공용 IP
port : 3306
Database : 5)에서 생성한 DB 명
username : 5) 에서 생성한 사용자 계정 명
password : 5) 에서 생성한 사용자 비밀번호
으로 입력후 좌측 하단 Test Connection 을 눌러서 접속을 시도하면 정상적으로 접속이 되는 것을 확인할 수 있다.