본문 바로가기
  • 개발하는 곰돌이
Development/Oracle Cloud

[Oracle Cloud] 오라클 클라우드 VM 인스턴스에 MySQL을 설치하고 원격으로 접속하기

by 개발하는 곰돌이 2023. 1. 28.

목차

    시작하기에 앞서

    이전 포스트에서 오라클 클라우드에 VM 인스턴스를 생성하여 원격 접속까지 진행해 보았다. 이번 포스트에서는 이 VM 인스턴스에 MySQL을 설치하고, IntelliJ 또는 DataGrip을 통해 오라클 클라우드 VM 인스턴스에 설치된 MySQL로 연결하는 과정을 다룬다.

    오라클 클라우드 VM 인스턴스 방화벽 설정

    VM 인스턴스에 DB를 설치하고 외부에서 접속하기 위해선 추가적인 보안 설정을 통해 DB가 사용하는 포트에 접속하는 것을 허용해야 한다. MySQL을 오라클 클라우드에 접속하여 컴퓨트 → 인스턴스에서 MySQL을 설치할 인스턴스를 선택하여 인스턴스 세부정보 페이지로 이동한다. 이후 인스턴스 정보에서 기본 VNIC 아래에 있는 서브넷 설정을 클릭하여 서브넷 세부정보 페이지로 이동한다.

    서브넷 세부정보 페이지에서 하단의 보안 목록에 존재하는 Default Security List를 클릭한다.

    이후 수신 규칙에서 수신 규칙 추가를 클릭하여 아래와 같은 내용으로 수신 규칙을 추가한다. 3306은 MySQL의 기본 포트번호이다. 특정 IP에서의 접속만 허용하고 싶다면 소스 CIDR 부분을, 특정 포트에서의 접속만 허용하고 싶다면 소스 포트 범위를 적당히 설정한다. 설명 부분은 원하는 내용을 작성해도 된다.

    CentOS 방화벽 설정

    외부에서 VM 인스턴스에 접속하기 위해선 클라우드 방화벽 설정 뿐만 아니라 Linux 방화벽 설정도 따로 해줘야 한다. 본 포스트는 CentOS 기준으로 작성되었기 때문에 Ubuntu나 기타 Linux의 경우에는 다를 수 있다.

     

    putty를 통해 VM 인스턴스에 접속한 후 다음 명령어를 입력하여 방화벽 허용 포트를 추가한 후 방화벽을 리로드한다. 필자의 경우에는 이미 등록되어 있기 때문에 주의 메시지가 나타났지만 처음 등록하는 것이라면 success만 나타날 것이다.

    sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
    sudo firewall-cmd --reload

    만약 방화벽이 활성화되어 있지 않다면 아래 명령어를 입력하여 방화벽을 활성화해준다.

    sudo systemctl start firewalld
    sudo systemctl enable firewalld

    정상적으로 성공했다면 아래 명렁어들을 입력하여 방화벽의 상태와 개방된 포트를 확인해본다. 필자의 경우엔 3306 외에 기본적으로 사용하는 포트들도 개방해놓긴 했는데 MySQL만 사용할 것이라면 나머지 포트는 개방하지 않아도 상관없을 것이다.

    systemctl status firewalld.service
    sudo firewall-cmd --list-ports

    MySQL 설치

    이제 본격적으로 MySQL을 설치해야한다. 다만 CentOS에서 사용하는 yum 레포지토리에는 MySQL이 존재하지 않기 때문에 무작정 sudo yum install mysql을 입력하면 MariaDB가 설치된다. 따라서 yum 레포지토리에 MySQL 레포지토리를 추가할 필요가 있다.

    install mysql을 입력했지만 MariaDB를 설치하려고 한다.

    우선 아래 명령어를 입력하여 yum 레포지토리에 MySQL 레포지토리를 추가한다.

    sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm

    MySQL 레포지토리 추가가 끝났다면 아래 명령어를 입력하여 MySQL을 설치한다. 사진상으로는 root 계정으로 진행하였기 때문에 sudo를 제외한 명령어를 입력했다.

    sudo yum install mysql-server

    설치가 완료됐다면 아래 명령어를 입력하여 MySQL 버전을 확인해본다.

    mysql --version

    아래 명령어를 입력하여 MySQL을 시작하고, VM 인스턴스 부팅 시 자동으로 실행되도록 설정한다.

    systemctl start mysqld
    systemctl enable mysqld

    NOKEY 오류가 발생할 경우

    간혹 아래 사진과 같이 키가 없다는 경고가 나오면서 MySQL 설치에 실패하는 경우가 있다. 이 경우에는 수동으로 키를 다운로드 받아서 등록해줘야 한다.

    터미널에 아래 명령어를 입력하여 키를 다운로드 받는다. root 계정일 경우 sudo는 제외한다.

    sudo wget https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 --no-check-certificate

    키를 다운로드 받았다면 아래 명령어를 입력하여 키를 옮긴 후 레포지토리에 키를 import하고, 다시 MySQL 설치를 시도한다. 설치가 정상적으로 완료된다면 위와 같이 MySQL을 시작하고, VM 인스턴스 부팅 시 자동으로 실행되도록 설정한다.

    mv RPM-GPG-KEY-mysql-2022 /etc/pki/rpm-gpg/
    sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
    sudo yum install mysql-server
    systemctl start mysqld
    systemctl enable mysqld

    MySQL 초기 설정

    MySQL 설치가 끝났으니 외부에서 사용할 MySQL 계정 등을 설정해야한다. MySQL은 기본적으로 설치 시 root 계정의 임시 비밀번호가 부여된다. 임시 비밀번호는 아래 명령어를 입력하여 확인할 수 있다.

    grep 'temporary password' /var/log/mysqld.log

    아래 명령어를 입력하여 MySQL에 root 계정으로 접속한다. 비밀 번호는 위 명령어로 확인한 임시 비밀번호를 입력한다.

    mysql -u root -p

    임시 비밀번호로는 정상적인 MySQL 기능을 이용할 수 없기 때문에 아래 쿼리를 입력하여 root 계정의 비밀번호를 변경한다. MySQL 8.0 비밀번호 정책에 맞게 영문 대소문자, 숫자, 특수문자가 각각 최소 1개씩 포함된 8자리 이상의 비밀번호를 설정해야 한다.

    alter user 'root'@'localhost' identified by '비밀번호';

    외부에서 접속하기 위한 MySQL 추가 설정

    위 내용까지만 진행해도 MySQL을 사용하는 것 자체에는 문제가 없으나, 외부에서 MySQL에 접속하기 위해서는 추가적인 설정이 필요하다. 아래 쿼리를 입력하여 계정 정보들을 확인해보면 최초에는 호스트가 모두 localhost로만 설정된 것을 볼 수 있다. 필자의 경우에는 외부접속을 위한 계정을 생성하였기 때문에 호스트가 %인 root 계정이 존재하지만 최초에는 localhost인 계정만 존재한다.

    select host,user from mysql.user;

    따라서, 외부 접속을 하기 위한 계정을 추가로 생성해줄 필요가 있다. 아래 쿼리를 입력하여 외부에서 접속하기 위한 계정을 추가하고, 권한을 부여한 후 새로고침한다.

    create user '계정명'@'%' identified by '비밀번호';
    grant all privileges on *.* to '계정명'@'%';
    flush privileges;

    외부 접속 테스트

    모든 설정이 끝났으니 IntelliJ나 DataGrip을 실행하여 원격 연결이 되는지 테스트 해본다. IntelliJ라면 우측의 Database를 클릭한 후 + → Data Source → MySQL을 클릭하고 DataGrip은 New → Data Source → MySQL을 클릭하여 Data Source 설정창을 연다.

    좌 : IntelliJ / 우 : DataGrip

    설정창에서 Host에 VM 인스턴스의 공용 IP 주소를 입력하고 User에 윗단계에서 생성한 계정명을, Password에 윗단계에서 생성한 계정의 비밀번호를 입력한다. 이후 하단의 Test Connection을 클릭하면 연결 테스트에 성공했다는 메시지를 볼 수 있다. 이 과정을 진행하는 도중에 드라이버를 다운로드해야 할 수 있다.

    위 Data Source 설정창에서 Host, User를 입력하고 Database를 선택하면 자동으로 URL이 완성되는데, Spring이나 Spring Boot 프로젝트에서 DB 연결 정보를 설정할 때 해당 URL을 사용하면 된다.

    참조 링크

     

    [MySQL 8.0] CentOS7에 MySQL 8.0설치하기

    안녕하세요 🙋‍♀️ 🙋‍♂️ !!! 이번 포스팅에서는 mysql 8.0 버전을 설치해보려고 합니다 ;) 저는 AmazonEC2 CentOS7을 사용했습니다!!! 1. MySQL 설치 다운로드 링크 확인 MySQL Commucity 버전으로 다운

    1mini2.tistory.com

     

    [MySQL] yum으로 MySQL 설치 (CentOS 7)

    yum으로 mysql을 설치하는 법은 간단하다. 설치하고 서비스에 등록하는 방법은 아래와 같고, 이어서 설치하는 과정과 설치하면서 문제가 생겼던 부분을 설명한다. mysql 설치 yum install http://dev.mysql.c

    dev-kwon.tistory.com

     

    댓글