MariaDB 사용자 계정 정리 가이드 | 익명 계정 삭제 & 권한 설정 Best Practice
MariaDB 설치 후 반드시 해야 할 보안 설정 가이드. 익명 계정 삭제, 사용자 권한 점검, SQL 명령어 모음, 실수 복구 사례까지 실무 중심으로 정리했습니다.
1. MariaDB 기본 사용자 계정 이해
MariaDB 설치 직후 아래와 같은 계정이 존재합니다.
| User | Host | 설명 |
|---|---|---|
| root | localhost | 관리자 계정 |
| (빈 값) | localhost 등 | 익명 계정(보안 위험) |
익명 계정은 테스트 편의성 때문에 존재하지만, 실제 운영 환경에서는 취약점이 됩니다.
2. 사용자 권한을 확인하는 올바른 방법
SELECT User, Host FROM mysql.user;
특정 사용자 권한 확인:
SHOW GRANTS FOR 'root'@'localhost';
※ mysql.user 테이블 직접 수정은 위험합니다. DROP USER, GRANT 명령 사용을 권장합니다.
3. 익명 계정은 꼭! 삭제해야 하는 이유
- 비밀번호 없이 접속 가능
- 침해 시 즉시 DB 탈취 가능
- 로깅/추적 불가
익명 계정 삭제 권장:
DROP USER ''@'localhost';
FLUSH PRIVILEGES;
4. 명령 실행 전 백업은 선택이 아닌 필수
사용자 및 권한정보 백업:
mysqldump -u root -p mysql user > mysql_user_backup.sql
복원:
mysql -u root -p mysql < mysql_user_backup.sql
문제 발생 시 빠르게 복구할 수 있도록 백업 습관을 들이세요.
5. root 계정만 남기는 것은 위험!
root 계정만 사용 시 발생 문제:
| 위험 | 설명 |
|---|---|
| 사고 시 DB 전체 손상 | DROP DATABASE 오타 한 번으로 재앙 |
| 장애 분석 불가 | 누가 작업했는지 추적 불가능 |
| 보안 원칙 위반 | 최소 권한 원칙 불이행 |
운영/서비스 계정은 반드시 따로 두어야 합니다.
6. 안전하게 불필요 계정 정리 절차
- 사용자 목록 확인
- 필요 없는 계정 식별
- 개별 제거
- 권한 적용
DROP USER 'test'@'%';
DROP USER ''@'localhost';
FLUSH PRIVILEGES;
절대 하면 안되는 실수:
DELETE FROM mysql.user WHERE User <> 'root';
→ root 원격 접속 삭제 → 접속 불가 사례 다수 발생
7. 실제 서비스 계정 운영 Best Practice
Web App 서비스 계정 구성 예시:
CREATE USER 'app'@'localhost' IDENTIFIED BY 'StrongPassword!';
GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'localhost';
FLUSH PRIVILEGES;
Host % 사용은 최소화하세요. 특정 IP 또는 localhost만 허용하는 것이 안전합니다.
운영/개발/테스트 계정은 역할을 분리해 두면 문제 발생 시 영향도를 줄일 수 있습니다.
8. 실수 사례(삽질 기록)
| 상황 | 결과 | 해결 방법 |
|---|---|---|
| root 외 계정 모두 삭제 | DB 접속 불가 | single-user mode + 패스워드 재설정 |
| 서비스 계정 삭제 | 웹 서비스 장애 발생 | 백업 복원 |
| 권한 과다 부여 | 개발자가 전체 DB DROP | 권한 최소화 재정의 |
재현 불가 장애의 많은 원인은 계정 관리 문제에서 시작합니다.
9. MySQL vs MariaDB 차이 비교
| 항목 | MySQL | MariaDB |
|---|---|---|
| 개발 주체 | Oracle | MariaDB Foundation |
| 인증 플러그인 | 기본 | PAM / Unix Socket 강력 지원 |
| 계정 정책 | 안정적 호환성 | 버전별 차이 존재 |
| 초기 계정 구성 | OS 따라 다름 | 익명 계정이 더 빈번 |
실무 환경에서는 사용 중인 버전에 따른 명령 차이를 사전에 확인하세요.
10. SQL 명령어 모음
필요 시 복사해 사용하세요.
-- 사용자 전체 조회
SELECT User, Host FROM mysql.user;
-- 사용자 생성
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
-- 권한 부여
GRANT SELECT,INSERT,UPDATE ON appdb.* TO 'user'@'localhost';
-- 사용자 삭제
DROP USER 'user'@'localhost';
-- 권한 변경 적용
FLUSH PRIVILEGES;
11. 마무리: DB 보안은 계정 관리에서 시작
- 익명 계정 삭제 필수
- root 계정만 사용하는 운영 구조는 위험
- 서비스 계정 별도 운영은 선택이 아닌 필수
- 정기적인 권한 점검 필요
- 백업 습관이 안정적인 운영의 핵심
스마트베이 | IT 자동화 혁신 파트너
비즈니스 효율을 높이는 스마트한 IT 솔루션을 제공합니다.
웹사이트 : www.esmartbay.co.kr
E-mail : smartbay.svc@gmail.com
카카오톡 : 바로 상담하기
비즈니스 효율을 높이는 스마트한 IT 솔루션을 제공합니다.
웹사이트 : www.esmartbay.co.kr
E-mail : smartbay.svc@gmail.com
카카오톡 : 바로 상담하기
'서버 & 리눅스 실무팁' 카테고리의 다른 글
| Rocky Linux KVM에서 Windows 11 설치하는 방법 (부팅 오류 & 네트워크 건너뛰기 해결 포함) (10) | 2025.08.09 |
|---|---|
| OCSP Stapling 완벽 가이드: SSL 인증서 유효성 검증, Apache·Let's Encrypt 설정과 자동 모니터링 방법 (4) | 2025.07.31 |
| Rocky Linux Apache에서 OpenSSL 기반 TLS 1.2/1.3 활성화 및 Let’s Encrypt 인증서 발급 완벽 가이드 (3) | 2025.07.31 |
| 리눅스 쉘 스크립트 실전 예제 시리즈 (총 10편) (3) | 2025.06.14 |
| 리눅스 쉘 스크립트 실전 예제 Part 10: 파일 분석 및 리포트 자동화 (0) | 2025.06.14 |