콘텐츠로 이동

MySQL 설치 및 초기 설정

운영 서버(Production Server) 에서 MySQL을 설치하고
운영 가능한 초기 상태로 만드는 표준 절차(runbook) 를 정의함.

명령어를 나열하되, 각 단계의 목적과 운영상 이유를 함께 기술함.


1. 권한 기준 및 실행 주체

MySQL 설치 과정에는 크게 두 종류의 작업이 존재함.

1.1 OS 레벨 작업

  • 패키지 설치/업데이트
  • 서비스 시작/재시작(systemd)
  • 설정 파일(/etc/my.cnf) 수정
  • 방화벽/SELinux 설정

위 작업은 OS 자원에 영향을 주므로 root 권한이 필요함.
따라서 OS 레벨 작업은 다음 중 하나로 실행함.

  • root 계정에서 실행
  • 일반 사용자 계정에서 sudo로 실행

운영 서버에서는 root 직접 로그인보다
일반 사용자 + sudo 방식이 기본임.

1.2 DB 레벨 작업

  • MySQL 접속
  • 계정 생성/권한 부여
  • 데이터베이스 생성 등

DB 레벨 작업은 MySQL 내부 권한을 요구함.
초기 상태에서 권한을 가진 계정은 보통 root 뿐이므로
초기 DB 구성은 root로 수행하는 것이 불가피함.

단, 이는 “root를 운영에 사용한다”는 의미가 아님.
초기 셋업에만 root를 사용하고, 이후 앱 계정을 분리함.


2. 운영 환경에서 root와 사용자 계정을 분리하는 이유

운영 환경에서 root와 애플리케이션 계정을 분리하는 목적은 다음과 같음.

  • 사고 범위 축소
    • 앱 취약점/키 유출 발생 시 root 권한까지 뚫리면 피해가 즉시 전체화됨
  • 최소 권한 원칙 적용
    • 앱은 필요한 DB/테이블 권한만 가져야 함
  • 변경 책임 분리
    • 운영/관리 작업(root)과 애플리케이션 트래픽(앱 계정)의 책임을 분리함
  • 감사/추적성 강화
    • 누가 어떤 권한으로 실행했는지 로그 및 운영 추적이 쉬워짐

운영 서버에서 애플리케이션이 root로 접속하는 구조는
시간 문제로 사고가 발생하는 구조 임.


3. 패키지 업데이트 (sudo 필요)

운영 서버에서는 MySQL 설치 전에 시스템 패키지를 최신 상태로 맞춤.

sudo dnf -y upgrade
  • 라이브러리 불일치로 인한 오류 방지 목적
  • 운영 서버에서는 부분 업데이트 허용하지 않음
  • DNF 환경에서는 updateupgrade 가 동일하게 동작하므로 한 번만 수행함

4. MySQL 설치 (sudo 필요)

패키지 매니저를 통해 MySQL Server 설치함.

sudo dnf install -y mysql-server
  • 소스 빌드 방식 사용하지 않음
  • 패키지 관리 시스템으로 보안 패치 관리함

5. MySQL 서비스 기동 및 등록 (sudo 필요)

MySQL은 항상 systemd 서비스로 관리함.

sudo systemctl start mysqld &&
sudo systemctl enable mysqld &&
sudo systemctl status mysqld
  • 수동 실행 금지
  • 서버 재부팅 시 자동 기동 필수

6. 초기 보안 설정 (sudo 필요)

설치 직후 반드시 mysql_secure_installation 수행함.

sudo mysql_secure_installation

권장 선택 값은 다음과 같음.

  • 비밀번호 유효성 검사 플러그인 사용: Y
  • 비밀번호 정책 수준: STRONG (3)
  • root 비밀번호 설정: 필수
  • 익명 계정 제거: Y
  • 원격 root 로그인 차단: Y
  • Test DB 제거: Y
  • 설정 저장: Y

이 단계는 운영 환경 필수 절차이며 생략하거나 완화하지 않음.


7. 서비스 재시작 및 상태 확인 (sudo 필요)

보안 설정 적용 후 MySQL을 재시작함.

sudo systemctl restart mysqld &&
sudo systemctl status mysqld
  • 오류 없이 정상 기동되는지 확인함
  • 오류 로그 발생 시 다음 단계로 진행하지 않음

8. MySQL 접속 확인 (sudo 선택)

초기 상태에서 root 접속 확인이 필요함.

8.1 권장 방식 (로컬 root, sudo 사용)

sudo mysql -u root -p
  • OS 권한을 통해 “관리자 접근”을 통제하는 방식임
  • 운영 서버에서 root 직접 로그인 대신, sudo 정책으로 접근 제어 가능함

8.2 일반 방식 (sudo 없이)

mysql -u root -p
  • 현재 쉘 사용자가 root 권한 또는 적절한 접근 권한을 가진 경우 가능함
  • 운영 서버에서는 접근 통제 측면에서 8.1 방식이 더 안전함

9. 설치 완료 기준

다음 조건을 모두 만족해야
MySQL 설치가 완료된 것으로 간주함.

  • mysqld 서비스 정상 기동 상태
  • systemd enable 상태 유지
  • mysql_secure_installation 완료
  • root 계정 로컬 접속 가능
  • 오류 로그 없음

이 상태가 운영 가능한 최소 기준선임.