HTML
리눅스 환경에서 데이터베이스 관리 시스템(DBMS)의 표준이라 할 수 있는 MySQL을 설치하는 것은 백엔드 개발 및 서버 관리에 있어 필수적인 과정입니다. 특히 2025년 현재, 안정성과 성능이 대폭 향상된 MySQL 8.0 버전이 널리 사용되고 있습니다. 이 포스팅에서는 가장 많이 사용되는 리눅스 배포판인 CentOS와 Ubuntu 환경에서 MySQL 8.0을 설치하고 기본적인 초기 설정을 완료하는 방법에 대해 자세히 안내합니다.
📚 함께 읽으면 좋은 글
성공적인 데이터베이스 구축을 위해 설치 전 시스템 요구 사항을 확인하고, 각 배포판에 맞는 설치 방법을 정확히 따라야 합니다. 안정적인 데이터베이스 환경을 빠르게 구축할 수 있도록 단계별로 자세히 설명해 드립니다.
리눅스 MySQL 8.0 설치를 위한 사전 준비 및 확인하기
MySQL 8.0 설치를 시작하기 전에, 시스템이 요구 사항을 충족하는지 확인하고 필요한 패키지를 설치해야 합니다. 이는 설치 과정에서 발생할 수 있는 오류를 최소화하는 데 중요합니다.
가장 먼저, 시스템의 패키지 목록을 최신 상태로 업데이트해야 합니다. 이는 Ubuntu와 CentOS 모두에게 해당되는 기본적인 단계입니다.
Ubuntu 환경에서 MySQL 설치 준비 확인하기
Ubuntu의 경우, APT(Advanced Package Tool)를 사용하여 시스템을 업데이트하고 필요한 도구를 설치합니다. 특히, wget이나 curl과 같은 다운로드 도구와 gnupg 같은 보안 도구가 필요할 수 있습니다.
sudo apt update
sudo apt upgrade
sudo apt install wget gnupg
Ubuntu의 기본 저장소에는 최신 버전의 MySQL이 포함되어 있지 않을 수 있으므로, 공식 MySQL APT 저장소를 추가하는 것이 권장됩니다. 저장소 추가 후에는 다시 한번 패키지 목록을 업데이트하여 MySQL 설치를 위한 준비를 마칩니다. 새로운 MySQL APT 저장소를 추가하는 것이 가장 안정적인 최신 버전 설치 방법입니다.
CentOS/RHEL 환경에서 MySQL 8.0 설치 명령어 보기
CentOS 또는 RHEL(Red Hat Enterprise Linux) 계열에서는 YUM(Yellowdog Updater, Modified) 또는 DNF(Dandified YUM) 패키지 관리자를 사용합니다. 이 환경에서도 MySQL 8.0 설치를 위해 공식 MySQL Yum Repository를 설정하는 것이 표준입니다.
MySQL Yum Repository 설정 상세 더보기
먼저, MySQL Yum Repository를 위한 .rpm 파일을 다운로드하고 설치합니다. 이 파일을 설치하면 시스템의 YUM/DNF 저장소 목록에 MySQL 공식 저장소가 추가됩니다.
# 리눅스 버전 확인 후 적절한 RPM 파일 다운로드
wget https://dev.mysql.com/get/mysql80-community-release-el7-*.noarch.rpm # CentOS 7 예시
sudo rpm -ivh mysql80-community-release-el7-*.noarch.rpm
저장소 설정 후, YUM 또는 DNF 명령어를 사용하여 MySQL 서버를 설치합니다.
# CentOS 7 이하
sudo yum install mysql-server
# CentOS 8 이상 또는 Fedora
sudo dnf install mysql-server
설치가 완료되면, sudo systemctl start mysqld 명령어로 MySQL 서비스를 시작하고, sudo systemctl enable mysqld로 부팅 시 자동 시작되도록 설정합니다.
Ubuntu 환경에서 MySQL 8.0 설치 및 서비스 시작 확인하기
Ubuntu 환경에서 공식 APT 저장소를 추가했다면, 설치는 매우 간단합니다. 저장소를 통해 MySQL 서버 패키지를 설치합니다.
sudo apt update
sudo apt install mysql-server
설치 도중, MySQL root 사용자의 비밀번호를 설정하라는 메시지가 나타날 수 있습니다. 이 비밀번호는 나중에 데이터베이스 관리에 사용되므로 안전하게 보관해야 합니다. 설치가 완료되면, MySQL 서비스는 자동으로 시작되지만, 상태를 확인하는 것이 좋습니다.
sudo systemctl status mysql
상태가 active (running)으로 표시되면 성공적으로 설치되고 실행 중인 것입니다. 만약 서비스가 실행되지 않는다면, 다음 명령어로 수동으로 시작할 수 있습니다.
sudo systemctl start mysql
서비스가 부팅 시 자동으로 시작되도록 설정하는 것도 중요합니다.
sudo systemctl enable mysql
최초 MySQL 보안 설정 및 데이터베이스 접속 상세 더보기
MySQL 설치 후 가장 중요한 단계는 보안 설정을 강화하는 것입니다. MySQL은 mysql_secure_installation 스크립트를 제공하여 이 과정을 쉽게 진행할 수 있도록 돕습니다.
보안 설정 스크립트 실행
sudo mysql_secure_installation
이 스크립트를 실행하면 다음과 같은 보안 관련 설정을 진행하게 됩니다:
- **VALIDATE PASSWORD PLUGIN:** 비밀번호 강도 검사 플러그인 설정 (권장: 사용).
- **root 비밀번호 변경:** 설치 시 설정하지 않았다면 이 단계에서 설정합니다.
- **익명 사용자 제거:** 보안을 위해 익명 사용자를 제거합니다 (권장: 예).
- **원격 root 로그인 비활성화:** 외부에서 root 계정으로 접속하는 것을 차단합니다 (권장: 예).
- **테스트 데이터베이스 제거:** 기본으로 제공되는 테스트 데이터베이스를 제거합니다 (권장: 예).
이 단계를 통해 데이터베이스의 기본 보안을 크게 향상시킬 수 있습니다. 특히 비밀번호 유효성 검사 기능을 활성화하면 보안 수준이 매우 높아집니다.
MySQL 데이터베이스 접속 확인하기
모든 설정이 완료되었다면, 터미널에서 MySQL에 접속하여 정상 작동하는지 확인합니다.
mysql -u root -p
이후 설정한 root 비밀번호를 입력하면 MySQL 명령 프롬프트(mysql>)로 진입하게 됩니다. 접속에 성공하면 데이터베이스 구축이 완료된 것입니다.
MySQL 8.0 설치 오류 해결 팁 및 확인하기
MySQL 설치 과정에서 종종 발생할 수 있는 일반적인 오류와 그 해결 방법을 알아봅니다.
서비스 시작 실패 (Failed to start)
가장 흔한 오류 중 하나는 서비스 시작 실패입니다. 이는 주로 포트 충돌, 데이터 디렉터리 권한 문제, 또는 설정 파일(my.cnf)의 문법 오류로 인해 발생합니다. 오류의 정확한 원인을 확인하려면 시스템 로그를 확인해야 합니다.
sudo journalctl -xe | grep mysql
로그를 분석하여 충돌하는 포트(기본값 3306)가 있는지, 데이터 디렉터리(일반적으로 /var/lib/mysql)의 소유자(mysql 사용자) 및 권한이 올바른지 확인하고 수정합니다.
설치된 MySQL 버전 확인
설치가 완료된 후 실제로 어떤 버전이 설치되었는지 확인하는 것은 중요합니다. MySQL에 접속하지 않고도 버전을 확인할 수 있습니다.
mysql -V
이 명령은 현재 설치된 MySQL 클라이언트 및 서버의 버전을 출력해 줍니다. MySQL 8.0으로 정확히 설치되었는지 확인하는 것은 필수적입니다.
추가 사용자 생성 및 원격 접속 설정 상세 더보기
보안상의 이유로 root 계정 대신 일반 데이터베이스 사용자를 생성하여 운영하는 것이 좋습니다. 또한, 외부에서 접속이 필요할 경우 원격 접속을 위한 설정을 추가해야 합니다.
새로운 데이터베이스 사용자 생성
MySQL 프롬프트에 접속한 후, 다음 명령어를 사용하여 새 사용자를 생성하고 권한을 부여할 수 있습니다.
CREATE USER '새사용자'@'localhost' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON *.* TO '새사용자'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
위 예시에서 '새사용자'@'localhost'는 로컬 접속만 허용하지만, '새사용자'@'%'로 변경하면 모든 IP에서의 접속을 허용합니다.
원격 접속을 위한 설정
기본적으로 MySQL은 로컬 접속(localhost 또는 127.0.0.1)만 허용하도록 설정되어 있습니다. 원격 접속을 허용하려면 설정 파일(/etc/mysql/mysql.conf.d/mysqld.cnf 또는 /etc/my.cnf)에서 bind-address 설정을 변경해야 합니다.
bind-address = 127.0.0.1을 bind-address = 0.0.0.0으로 변경하거나 주석 처리하고, MySQL 서비스를 재시작합니다.
sudo systemctl restart mysql
또한, 서버의 방화벽(Firewall)에서 기본 MySQL 포트인 3306 포트를 열어주어야 외부 접속이 가능해집니다.
📌 추가로 참고할 만한 글
자주 묻는 질문 (FAQ)
MySQL 설치 및 관리에 대한 일반적인 질문과 답변입니다.
A: 네, CentOS 8 이상 버전과 Fedora에서는 Yum 대신 DNF가 기본 패키지 관리 도구입니다. DNF는 Yum보다 성능과 의존성 해결 능력이 개선되었습니다. MySQL 설치 시 DNF 명령어를 사용하시면 됩니다.
A: MariaDB는 MySQL에서 파생된 데이터베이스로, 설치 경로와 서비스 이름이 유사하여 충돌할 수 있습니다. 충돌을 방지하려면 MySQL 설치 전 MariaDB 관련 패키지를 완전히 제거해야 합니다. 명령어는 sudo apt purge mariadb-server (Ubuntu) 또는 sudo yum remove mariadb-server (CentOS) 등입니다.
A: root 비밀번호를 잊어버린 경우, MySQL 서비스를 안전 모드(Skip Grant Tables)로 시작한 후 비밀번호를 재설정할 수 있습니다. 이 과정은 보안상 민감하므로 공식 MySQL 문서를 참조하여 신중하게 진행해야 합니다.
