반응형
MySQL을 운영하면서 기능은 잘 돌아가지만,
보안은 기본값 그대로 둔 채 방치되는 경우가 생각보다 많다.
문제는 이런 사소한 보안 구멍이 실제 사고로 이어질 수 있다는 점이다.

✅ 1. root 계정 외 다른 관리 계정이 없다
- root 계정 하나만으로 모든 작업을 처리하면 실수나 공격의 영향이 치명적
- 운영, 개발, 모니터링 용도별로 최소 권한 계정 분리 필요
실무 팁
CREATE USER 'devuser'@'%' IDENTIFIED BY 'password';
GRANT SELECT, INSERT ON mydb.* TO 'devuser'@'%';
반응형
✅ 2. 사용자 계정에 불필요한 권한이 부여됨
- GRANT ALL ON . 은 절대 금지
- 개발 편의상 부여된 권한이 운영에 그대로 적용되는 경우 많음
실무 팁
정확한 작업 범위에 맞는 권한만 부여하고
정기적으로 SHOW GRANTS FOR 'user'@'host'; 로 점검
✅ 3. 비밀번호 정책 설정이 없다
- 기본 설치 상태에서는 비밀번호 복잡도나 길이에 대한 정책 없음
- 짧고 단순한 비밀번호 사용이 가능함
실무 팁
SHOW VARIABLES LIKE 'validate_password%';
SET GLOBAL validate_password.policy = STRONG;
8자 이상 + 대소문자 + 숫자 + 특수문자 조합 권장
✅ 4. 원격 접속 제한이 없다
- 모든 사용자 계정이 @'%' 형태로 만들어져 있으면
외부 어디서든 접속 시도 가능
실무 팁
CREATE USER 'admin'@'192.168.0.%' IDENTIFIED BY 'securepass';
필요한 IP 대역만 허용하고, 나머지는 차단
✅ 5. SSL 사용을 강제하지 않음
- 암호화 없이 MySQL 통신을 허용하면
비밀번호, 쿼리, 결과값이 그대로 노출됨
실무 팁
require_secure_transport = ON 설정으로 SSL 접속만 허용
✅ 6. 디버그용 계정이 방치됨
- 개발 중 임시로 만든 테스트 계정이나
권한을 가진 guest 계정이 삭제되지 않은 경우
실무 팁
SELECT user, host FROM mysql.user;
정기 점검으로 불필요한 계정은 모두 제거
반응형
✅ 7. 오류 메시지 노출 과다
- 인증 실패나 쿼리 오류 시 너무 상세한 에러 메시지를 반환하면
공격자에게 DB 구조나 계정 유무 힌트를 줄 수 있음
실무 팁
애플리케이션 레이어에서 일괄된 에러 메시지 처리 권장
✅ 8. 로그가 보안 대상이 아니라는 착각
- MySQL의 general_log, error_log, binlog에도 민감 정보가 저장될 수 있음
- 특히 쿼리 로그는 SQL 전체가 노출되기 때문에 위험
실무 팁
로그 파일 권한을 mysql:mysql으로 제한하고,
보안이 필요한 로그는 별도 마스킹 또는 필터링 적용
✅ 9. 최신 보안 패치가 반영되지 않음
- 오랜 기간 업데이트 없이 사용하는 경우
이미 알려진 취약점에 그대로 노출될 수 있음
실무 팁
MySQL 공식 보안 릴리즈 주기 따라
정기적으로 업그레이드 또는 보안 패치 확인
✅ 10. 비밀번호를 평문으로 저장
- 어플리케이션에서 DB 접속용 비밀번호를
소스 코드나 설정 파일에 그대로 작성하는 경우
실무 팁
.env 파일 사용 또는 OS 환경변수로 주입하고,
최종적으로는 Vault, KMS 같은 비밀관리 도구 도입 고려
📘 공식 문서 참고
반응형
'DB' 카테고리의 다른 글
| [MySQL] (복제구조4️⃣) 복제 환경에서 자주 발생하는 문제와 해결법 (2) | 2025.07.16 |
|---|---|
| [MySQL] (복제구조3️⃣) GTID 기반 복제 완전 이해하기 (0) | 2025.07.16 |
| [MySQL] (복제구조2️⃣) Master-Slave 복제 설정 실습 가이드 (0) | 2025.07.16 |
| [MySQL] (복제구조1️⃣) MySQL 복제란? 구조와 개념 완전 정리 (0) | 2025.07.16 |
| [MySQL] (보안설정4️⃣) SSL 인증서 적용하기: OpenSSL 기반 실습 가이드 (1) | 2025.07.16 |
| [MySQL] (보안설정3️⃣) 데이터 in transit 암호화: 네트워크 구간 보안 설정법 (0) | 2025.07.16 |
| [MySQL] (보안설정2️⃣) 데이터 at rest 암호화 설정법: 테이블·디스크 암호화 실무 가이드 (0) | 2025.07.16 |
| [MySQL] (보안설정1️⃣) 데이터 암호화가 필요한 이유와 기본 개념 정리 (1) | 2025.07.16 |