← 전체 목록
서버백업운영

MySQL 보안 설정으로 DB 무단 접근 위험을 차단합니다

ℹ️ 본 글은 정보 제공 목적이며, 광고·제휴 링크가 포함될 수 있습니다.

MySQL 루트 계정 보안 설정은 서버 설치 후 반드시 해야 하는 초기 작업 중 하나입니다. MySQL을 패키지로 설치하면 기본적으로 루트 계정이 비밀번호 없이 접근 가능하거나, 약한 비밀번호가 설정된 상태입니다. 또한 테스트 DB와 익명 사용자 계정도 기본 생성됩니다. 이런 기본 상태를 그대로 두면 DB 보안의 가장 기초적인 구멍이 열려 있는 것입니다.

mysql_secure_installation 실행

MySQL 설치 직후 이 명령어 하나로 핵심 보안 설정을 대화형으로 완료할 수 있습니다.

sudo mysql_secure_installation

순서대로 다음 항목에 응답합니다.

Validate Password Plugin 설치? → Y (비밀번호 복잡도 검증 추가)
비밀번호 복잡도 수준 선택 → 2 (HIGH 권장)
루트 비밀번호 설정/변경
익명 사용자 제거? → Y
원격 루트 로그인 차단? → Y (중요!)
테스트 DB 제거? → Y
권한 테이블 다시 로드? → Y

“원격 루트 로그인 차단”은 반드시 Y입니다. 이 설정 하나가 외부에서 DB 루트 계정으로 접근하는 것을 막습니다.

워드프레스 전용 DB 사용자 생성

루트 계정을 직접 워드프레스에 사용하지 마세요. 최소 권한 원칙에 따라 전용 사용자를 만듭니다.

-- MySQL에 루트로 접속
sudo mysql -u root -p

-- 전용 DB와 사용자 생성
CREATE DATABASE hospital_wp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '강력한비밀번호';
GRANT ALL PRIVILEGES ON hospital_wp.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;

@'localhost'는 로컬에서만 접근 가능하다는 의미입니다. 외부 IP 접근은 허용하지 않습니다.

외부 접근 차단 확인

MySQL이 외부에서 접근 가능한지 확인합니다.

# MySQL 바인딩 주소 확인
grep "bind-address" /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1 이어야 합니다. 그래야 로컬 서버에서만 접속이 가능합니다.

만약 0.0.0.0 이라면 외부 접근이 열려 있는 상태입니다. 수정 후 MySQL을 재시작하세요.

sudo systemctl restart mysql

UFW에서도 3306 포트가 외부에서 열려 있지 않은지 확인하세요.

sudo ufw status | grep 3306

출력이 없으면 방화벽에서 3306이 차단된 정상 상태입니다. DB 보안은 설치 직후 한 번만 제대로 해두면 오래 유지됩니다.

편집 정책

AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.

작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)