배포판 기본 저장소로 mysql-server류 패키지를 설치하면 실제로는 MySQL이 아니라 포크인 MariaDB가 깔리는 경우가 많다. RHEL 계열과 데비안 계열 모두 오래전부터 기본 저장소를 MariaDB로 바꿔 두었기 때문이다. 진짜 MySQL을 쓰려면 오라클이 직접 운영하는 공식 저장소를 따로 등록해야 한다.

공식 저장소로 설치

RHEL 계열(Rocky Linux, AlmaLinux 등)은 Yum 저장소를, 데비안·우분투 계열은 APT 저장소를 쓴다. Yum 기준이다.

https://dev.mysql.com/downloads/repo/yum/ 에서 배포판 코드(el8, el9 등)에 맞는 저장소 등록용 rpm을 받는다. 패키지 이름에는 기본으로 활성화되는 MySQL 시리즈 번호가 들어가는데, 이 번호는 릴리스마다 바뀌므로 다운로드 페이지에서 매번 확인해야 한다.

sudo yum localinstall mysql<시리>-community-release-<플랫>-<>.noarch.rpm
sudo yum repolist enabled | grep mysql.*-community
sudo yum install mysql-community-server
sudo systemctl start mysqld

기본으로 활성화되는 시리즈가 원하는 버전이 아니면 yum-config-manager로 전환한다.

sudo yum-config-manager --disable mysql<현재-시리>-community
sudo yum-config-manager --enable mysql<원하는-시리>-community

데비안·우분투 계열은 같은 흐름이되, https://dev.mysql.com/downloads/repo/apt/ 에서 받은 .deb 패키지로 저장소를 등록하고 apt install mysql-server로 설치한다.

설치 후 반드시 할 것

설치 직후 서버는 root 계정에 임시 비밀번호를 발급해 로그에 남긴다.

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

이 비밀번호로 접속해 곧바로 바꾼다.

mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '새_비밀번호';

새 비밀번호는 기본 설치되는 validate_password 컴포넌트의 정책(대문자·소문자·숫자·특수문자 각 1개 이상, 총 8자 이상)을 통과해야 한다.

이어서 mysql_secure_installation을 실행한다.

sudo mysql_secure_installation

차례로 다음을 묻는다.

  • validate_password 컴포넌트를 아직 안 깔았다면 설치할지
  • root 비밀번호를 다시 설정할지
  • 외부에서 접속 가능한 root 계정을 제거할지
  • 익명 사용자 계정을 제거할지
  • test 데이터베이스와 그에 대한 접근 권한을 제거할지
  • 지금까지 바뀐 권한을 즉시 반영할지(권한 테이블 리로드)

전부 “예”로 답하는 쪽이 기본에 가깝고, 운영 서버라면 특별한 이유가 없는 한 그대로 따르는 편이 안전하다.

5.7을 아직 쓰고 있다면

이 글의 원래 버전은 CentOS 7에 MySQL 5.7을 설치하는 절차를 담고 있었다. 두 EOL이 겹쳐 있다. CentOS 7은 2024년 6월 30일에 배포판 자체의 지원이 끝났고, MySQL 5.7은 그보다 앞서 2023년 10월 25일부로 오라클의 정규 지원(Extended Support)이 끝나고 Sustaining Support로 넘어갔다. Sustaining Support 단계에서는 이미 존재하는 수정 사항 외에 새 버그 수정도 새 보안 패치도 나오지 않는다.

지금도 5.7을 운영 중이라면 새 기능보다 보안 패치가 끊겼다는 점이 문제다. 마이그레이션 전에 데이터를 백업하고, 애플리케이션이 의존하는 SQL 모드나 설정값이 상위 버전에서 그대로 유지되는지 공식 업그레이드 가이드로 확인한 뒤 경로를 잡는다.

참고