[MySQL] VM에 MySQL 설치/연결

코린이·2025년 6월 20일

포트폴리오

목록 보기
1/7
post-thumbnail

📢 개요

DB관련 공부를 하면서 실제 현업에서 사용하는 온프레미스(on-premises) 방식 또는 클라우드 환경을 구축하여 DB관련 공부를 해보고 싶었다.

개인 DB서버를 구축하기 위해 중고 PC를 구매해 서버로 활용하는 방안을 고민했지만, 비용적인 부담 때문에 결국 포기하게 되었다.
(클라우드의 경우 러닝커브와 비용 걱정 때문에 포기)

그 후 곰곰이 생각해보니, 지금 사용 중인 맥북의 성능이 꽤 괜찮다는 점을 뒤늦게 떠올리게 되었다.
이러한 이유로 별도의 장비를 구매하지 않고 맥북에 가상 머신(VM)을 설치하여 개인용 MySQL DB 서버를 구축하기로 결정했다.



⚙️ 리눅스 서버 세팅

DB 서버는 안정성, 성능, 자원 효율성 등의 이유로 리눅스 환경에 구축하는 것이 일반적이다.
때문에 MySQL을 리눅스에 설치해 보려 한다.

현재 사용하는 PC는 macOS 기반의 PC이며, 개인 PC에 가상 머신(VM)을 설치하고 그 위에 CentOS를 설정하여 DB를 구축해 볼 예정이다.

  • 클라이언트 PC: MacBook(Apple Silicon)
  • 가상 머신: Oracle VirtualBox
  • 운영체제(OS): Linux (CentOS)

1-1. Oracle VirtualBox 설치.

  • 구글에 "Oracle VirtualBox 설치"를 검색한 후, 공식 사이트에 접속하여 사용하는 운영체제(macOS, Windows 등)에 맞는 설치 파일을 다운.
    설치 파일 실행 후 별다른 설정 없이 "계속" 버튼을 클릭하여 VirtualBox 설치 진행.

1-2. CentOS 이미지 다운로드.

  • 맥북(Apple Silicon)의 경우 ARM64 이미지 파일을 설치 진행.
    (애플 실리콘 맥북은 x86을 지원하지 않는다.)

1-3. Oracle VirtualBox에 리눅스 설치

  • Oracle VirtualBox 실행 후 가상 서버 생성 진행.
    이후 용도에 맞는 서버 이름 지정, ISO 이미지는 이전에 설치한 ISO 이미지 파일 지정.
    ISO 이미지를 설정하면 자동으로 설정을 맞춰주지만, 버전 부분을 ARM 64-bit(애플 실리콘 맥북 사용 시)로 지정해 준다.

  • 이후 상황에 맞게 하드웨어 설정, 루드 계정 생성 등의 작업을 완료하면 정상적으로 리눅스 서버를 사용할 수 있다.



💾 리눅스 서버에 MySQL 설치

리눅스 서버 설치/보유 완료 후 리눅스 서버에 접근하여 아래 순서을 통해 리눅스 서버에 MySQL을 설치한다.

2-1. CentOS 패키지 매니저 업데이트

sudo dnf update
또는
dnf update

2-2. MySQL 설치

sudo dnf install mysql-server
또는
dnf install mysql-server

설치 시 -y 옵션을 사용 안 하면 MySQL 버전을 확인 할 수 있다.
(-y 옵션 사용 시 버전 확인 없이 바로 설치 진행)

2-3. MySQL 설치 확인

mysql --version

위 명령어를 통해 MySQL 설치 여부와 설치 버전을 확인할 수 있다.

2-4. MySQL 실행

service mysqld start
또는
systemctl start mysqld   #추천 방식(centOS 6.0 이상)

위 명령어를 통해 MySQL을 실행한다.

systemctl status mysqld 

위 명령어를 통해 mysql의 동작 여부를 확인할 수 있다.
(Active부분이 active(running)으로 설정 되어 있으면 실행 중)

systemctl enable mysqld  #설정 추천(부팅 시 자동 시작)

필수 설정은 아니지만 위 명령어를 통해 서버 (재)부팅 시 자동으로 mysql을 서버에 실행시킬 수 있다.

2-5. MySQL 초기 설정

mysql_secure_installation

리눅스 서버에 MySQL 설치(install)/실행(start) 후 위 명령어를 사용하여 MySQL의 기본 설정을 명령어 대화 방식으로 빠르게 설정할 수 있다.

  • root 계정 비밀번호 설정
    → 루트 계정에 강력한 비밀번호를 지정하여 보안 강화 및 설정

  • 익명 사용자 제거(y)
    → 기본적으로 생성되는 익명 계정을 삭제하여 접근 차단
  • 원격 root 접속 금지(y)
    → 루트 계정이 외부에서 접속하는 것을 차단하여 보안 강화
  • test 데이터베이스 삭제(y)
    → 테스트용 DB를 제거하여 불필요한 노출 방지
  • 권한 테이블 새로고침(y)
    → 위에서 설정한 변경 사항을 즉시 적용

2-6. MySQL 접속/연결

mysql -u root -p

위 명령어를 통해 root 사용자로 MySQL에 접근할 수 있다.
(root 계정의 비밀번호는 mysql_secure_installation을 통해 설정)

MySQL 접근에 성공하면 mysql> 와 같은 커멘드 라인을 확인할 수 있다.



🔗 로컬PC <-> 가상 서버 DB 연결

DB IDE를 통해 내 컴퓨터에 설치된 MySQL_DB_VM(MySQL DB 서버)에 접근하기 위해서는 아래 정보 확인과 설정 작업이 필요하다.

1. VM 서버의 Hostname(IP) 확인
2. MySQL 사용자 생성 (외부 접속 허용)
3. MySQL 외부 접속 허용 설정
4. MySQL 포트 확인
5. 방화벽에서 MySQL 포트 개방

3-0. VM 서버 네트워크 설정 (로컬 PC에서 로컬 VM 접근 시 설정)

로컬 PC에서 같은 PC에 설치한 VM의 MySQL 서버에 접속하려면, VM과 로컬 PC가 서로 다른 IP를 가져야 한다.

기본 네트워크 모드인 NAT는 VM이 외부에서 접근할 수 없는 구조이기 때문에, VirtualBox의 네트워크 모드를 브리지 어댑터로 변경해야 한다.

브리지 모드를 사용하면 VM이 독립적인 네트워크 장치로 인식되어, 로컬 PC와 다른 IP를 갖게 되며, 네트워크 통신이 가능해진다.

[NAT]
NAT으로 설정하면 로컬 PC와 VM의 IP 주소가 동일하다.

ex)
로컬 IP : 192.0.0.123
VM IP : 192.0.0.123

[브리지 어댑터]
브리지 어댑터로 설정하면 로컬 PC와 VM의 IP 주소가 다르게 설정된다.

ex)
로컬 IP : 192.0.0.123
VM IP : 172.0.0.49

3-1. 서버의 Hostname(IP) 확인

아래 명령어를 통해 현재 서버의 Hostname(IP)을 확인할 수 있다.

hostname -I    # 매우 간단하게 IP 정보 확인 (추천)
ifconfig       # 옛날 방식, 비추천
ip a           # 다양한 정보 조회(추천)
ip addr        # 다양한 정보 조회(추천)

3-2. MySQL 사용자 생성 (외부 접속 허용)

root 사용자로 원격 접속을 금지하였기 때문에 원격 접속용 관리자(admin) 계정이 필요하다.

  • mysql_secure_installation 명령어를 통해 root 원격 접속 금지 설정함.

가장 먼저 root 사용자로 접속

mysql -u root -p

이후 MySQL 서버에 접근하여 "admin" 사용자 생성

mysql> CREATE USER 'admin'@'%' IDENTIFIED BY '<비밀번호>'; 

admin 사용자에게 모든 권한 부여(root 사용자 처럼 사용)

  • 권한 부여를 할 때 WITH GRANT OPTION을 추가하여 admin 계정이 다른 사용자에게 권한을 부여할 수 있도록 설정
    (DBA 계정 처럼 생성)
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;

3-3. MySQL 외부 접속 허용 설정

MySQL을 처음 설치하면 기본적으로 로컬에서만 접속이 가능하게 설정 되어 있을 것이다.

하지만 외부 접근을 가능하게 하려면 이를 수정해야 한다.

  • CentOS 기준 MySQL 외부 접근 설정 파일은 /etc/my.cnf이다.
# MySQL 외부 접근 설정 파일 접근/수정 실행
vi /etc/my.cnf

etc/my.cnf 파일 수정/접근 후 파일 하단 또는 상단에 아래 내용 추가/수정

[mysqld]
bind-address = 0.0.0.0   # 외부접근 모두 허용

위 파일 내용을 추가/설정 했으면 restart를 통해 설정을 적용한다.

sudo systemctl restart mysqld

3-4. MySQL 포트 확인

MySQL은 기본적으로 3306번 포트를 사용하지만, 설정에 따라 다른 포트를 사용할 수도 있으므로 실제로 어떤 포트를 사용하는지 추가 확인이 필요하다.

sudo ss -ntlp | grep mysql
또는 
ss -ntlp | grep mysql

3-5. 방화벽에서 MySQL 포트 개방

서버에서 MySQL 포트를 개방해야 로컬PC에서 원격으로 MySQL DB 서버로 접근할 수 있다.

아래 명령어를 통해 MySQL 포트(3306)가 개방되었는지 확인한다.

sudo firewall-cmd --list-all

만약 MySQL 포트(3306)가 개방되어 있지 않다면 아래 명령어를 통해 MySQL 포트를 개방/반영한다.

# --permanent : 서버가 종료->재부팅 되어도 해당 포트는 영구 개방
sudo firewall-cmd --permanent --add-port=3306/tcp

# 변경된 방화벽 설정을 즉시 반영
sudo firewall-cmd --reload


🧑🏻‍💻 서버 연결

위 확인 과정을 모두 거친 후 로컬 PC에 설치된 DB IDE를 통해 서버에 접근할 수 있다.

0개의 댓글