이번 글은 Splunk DB Connect와 MySQL을 연동하는 과정에서 실제로 마주친 오류, 원인 분석, 해결 방법, 그리고 최종 확인 결과까지 운영 기록 형태로 정리한 문서입니다.
1. 작업 목적
Splunk DB Connect를 사용하여 MySQL 데이터베이스와 정상적으로 연결할 수 있도록 환경을 점검하고,
연동 과정에서 발생한 인증 이슈를 해결하는 것이 이번 작업의 핵심 목적이었습니다.
- MySQL 서비스가 정상 기동되는지 확인
- DB Connect 연동 시 사용할 계정의 인증 방식이 호환되는지 확인
- root 계정 비밀번호 재설정이 가능한지 확인
- 최종적으로 MySQL 접속이 정상 동작하는지 검증
2. 사전 환경 및 관찰 내용
| 구성 요소 | MySQL 8.0.36 |
|---|---|
| 운영체제 계열 | Linux 계열 환경 |
| 주요 목적 | Splunk DB Connect와 MySQL 연동을 위한 인증/접속 환경 점검 |
| 확인된 계정 | root / splunk |
| 확인된 인증 플러그인 | mysql_native_password, caching_sha2_password |
3. 작업 절차 기록
3-1. MySQL 서비스 상태 확인
먼저 MySQL 서비스가 정상적으로 실행 중인지 확인했습니다.
서비스 상태 출력에서 active (running) 상태와 Server is operational 메시지를 확인할 수 있었습니다.
[root@demo ~]# systemctl status mysqld
● mysqld.service - MySQL 8.0 database server
Active: active (running)
Status: "Server is operational"
3-2. root 비밀번호 재설정을 위해 MySQL 중지
인증 문제를 우회하기 위해 MySQL을 일반 서비스 모드에서 중지한 뒤, 권한 테이블을 무시하는 방식으로 임시 기동을 시도했습니다.
[root@demo ~]# systemctl stop mysqld
[root@demo ~]# systemctl status mysqld
Active: inactive (dead)
Status: "Server shutdown complete"
3-3. 첫 번째 문제: mysqld_safe 명령 미존재
일반적으로 비밀번호 재설정 절차에서는
mysqld_safe --skip-grant-tables --skip-networking 명령을 사용하는 경우가 많습니다.
하지만 이번 환경에서는 해당 명령이 존재하지 않았습니다.
[root@demo ~]# mysqld_safe --skip-grant-tables --skip-networking &
-bash: mysqld_safe: command not found
현재 서버 환경에는 mysqld_safe 실행 파일이 설치되어 있지 않았습니다. 배포판이나 설치 방식에 따라 mysqld_safe가 빠져 있는 경우가 있으며, 이때는 실제 바이너리 경로를 확인해서 직접 mysqld를 실행해야 합니다.
which mysqld로 실제 실행 경로를 확인한 뒤, mysqld 바이너리를 직접 사용했습니다.
[root@demo ~]# which mysqld
/usr/sbin/mysqld
3-4. 두 번째 문제: root 계정으로 직접 mysqld 실행 시 실패
이어서 root 계정에서 직접 mysqld --skip-grant-tables --skip-networking로 실행했지만,
이번에는 MySQL이 보안 정책에 의해 즉시 종료되었습니다.
[root@demo ~]# mysqld --skip-grant-tables --skip-networking &
2026-03-26T02:00:50.632140Z 0 [ERROR] [MY-010123] [Server] Fatal error:
Please read "Security" section of the manual to find out how to run mysqld as root!
2026-03-26T02:00:50.632187Z 0 [ERROR] [MY-010119] [Server] Aborting
MySQL 8은 보안상 이유로 서버 프로세스를 root 계정으로 직접 실행하는 것을 허용하지 않습니다. 따라서 서비스 계정인 mysql 사용자로 실행해야 합니다.
id mysql로 서비스 계정을 확인한 뒤, su -s /bin/bash mysql로 전환하여 MySQL 프로세스를 실행했습니다.
[root@demo ~]# id mysql
uid=27(mysql) gid=27(mysql) groups=27(mysql)
[root@demo ~]# su -s /bin/bash mysql
bash-4.4$ /usr/libexec/mysqld --skip-grant-tables --skip-networking &
3-5. 권한 테이블 반영 후 root 비밀번호 재설정
권한 무시 모드로 진입한 뒤에는 MySQL 클라이언트로 접속하여
FLUSH PRIVILEGES;를 수행하고 root 계정 비밀번호 재설정을 시도했습니다.
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
3-6. 세 번째 문제: 비밀번호 정책 위반
처음에는 비교적 단순한 비밀번호로 root 비밀번호를 재설정하려 했지만, MySQL 비밀번호 정책에 의해 거부되었습니다.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'welcome1';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'qwer1234!@#$';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
MySQL의 validate password 정책 또는 유사 정책이 활성화되어 있었고, 길이·문자 조합·복잡도 조건을 만족하지 못하는 비밀번호는 사용할 수 없었습니다.
대문자, 소문자, 숫자, 특수문자를 모두 포함하는 보다 강한 비밀번호로 재설정하여 문제를 해결했습니다.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'AppleBanana123!';
Query OK, 0 rows affected (0.00 sec)
4. 결과 확인
4-1. 사용자 인증 플러그인 확인
비밀번호 재설정 이후 사용자 목록과 인증 플러그인을 확인했습니다.
이 과정에서 root 계정과 splunk_user 계정이 모두 mysql_native_password 방식으로 설정되어 있는 것을 확인할 수 있었습니다.
mysql> SELECT user, host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| splunk_user | % | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | mysql_native_password |
| splunk_user | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
Splunk DB Connect는 JDBC 드라이버와 계정 인증 방식 호환성이 중요합니다. 실무에서는 caching_sha2_password보다 mysql_native_password가 더 안정적으로 연동되는 사례가 많습니다. 따라서 splunk_user가 이미 mysql_native_password로 설정되어 있다는 점은 DB Connect 연동 측면에서 긍정적인 신호입니다.
4-2. 서비스 재기동 및 root 계정 재로그인 확인
임시 기동한 MySQL 프로세스를 종료한 뒤, 시스템 서비스로 다시 올리고 새 비밀번호로 root 로그인이 가능한지 확인했습니다.
[root@uclick ~]# pkill mysqld
[root@uclick ~]# systemctl start mysqld
[root@uclick ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.
Server version: 8.0.36 Source distribution
root 계정으로 정상 로그인에 성공했습니다. 즉, 비밀번호 재설정 작업은 정상 완료되었고, MySQL 서비스도 정상 기동 상태로 복귀했습니다.
5. 결과 화면 분석
분석 1. 서비스 상태 화면
처음의 systemctl status mysqld 결과는 MySQL 엔진 자체에는 장애가 없다는 점을 보여줍니다.
따라서 DB Connect 연결 실패가 있었다면,
서버 다운 문제가 아니라 계정 인증, 인증 플러그인, 비밀번호, 권한, 네트워크 설정 중 하나일 가능성이 높습니다.
분석 2. root 실행 실패 로그
Please read "Security" section of the manual to find out how to run mysqld as root!
메시지는 매우 중요합니다. 이 로그는 단순 실행 오류가 아니라 실행 주체 자체가 잘못되었다는 것을 명확하게 알려줍니다.
즉, root로 실행 명령을 바꾸는 것이 아니라 mysql OS 계정으로 실행 주체를 바꿔야 해결됩니다.
분석 3. 비밀번호 정책 오류
ERROR 1819는 MySQL 내부 정책에 의해 변경 명령이 거부된 것입니다.
이 오류는 계정 권한 부족이 아니라 입력한 비밀번호 문자열이 정책 기준을 만족하지 못했다는 뜻입니다.
따라서 이 경우에는 권한 재부여보다 비밀번호 복잡도 강화가 정답입니다.
분석 4. plugin 조회 결과
SELECT user, host, plugin FROM mysql.user; 결과는 Splunk DB Connect 연동 가능성을 판단하는 핵심 근거가 됩니다. 특히 splunk_user가 mysql_native_password로 확인된 점은 JDBC 연결에서 인증 호환성을 맞추는 데 유리합니다.
6. Splunk DB Connect 관점에서 정리
발생한 문제
MySQL 인증 관련 설정을 조정해야 하는 상황이 있었고, 비밀번호 재설정 과정에서 실행 파일 부재, root 실행 금지, 비밀번호 정책 위반이라는 세 가지 장애를 순차적으로 만났습니다.
핵심 해결 포인트
mysqld_safe 대신 실제 mysqld 바이너리 사용, root가 아닌 mysql 계정으로 실행, 정책을 만족하는 강한 비밀번호 설정이 핵심이었습니다.
- DB Connect에서 사용하는 JDBC 드라이버 버전
- Splunk 서버에서 MySQL 서버 IP/Port 접근 가능 여부
splunk_user계정에 필요한 SELECT 권한 부여 여부- DB Connect Connection 생성 시 Host / Port / DB Name / Username / Password 값 정확성
- MySQL 방화벽 및 bind-address 설정 확인
7. 결론
이번 작업을 통해 MySQL 서비스 자체는 정상 상태였고, 실제 문제는 인증 및 계정 처리 과정에 있었다는 점을 확인했습니다. 또한 root 비밀번호 재설정 절차에서 발생한 여러 오류를 단계적으로 해결하면서, 최종적으로는 MySQL 재로그인까지 성공했습니다.
특히 Splunk DB Connect 연동 관점에서는 splunk_user 계정이 mysql_native_password를 사용하고 있다는 점이 중요합니다. 이는 DB Connect와의 연동 안정성을 높이는 요소이며, 이후에는 DB Connect UI에서 실제 JDBC Connection Test만 수행하면 연동 가능 여부를 보다 직접적으로 검증할 수 있는 상태라고 볼 수 있습니다.
8. 한 줄 요약
MySQL 서비스는 정상 동작 중이었고, 비밀번호 재설정 과정에서 발생한 실행 파일 부재, root 실행 금지, 비밀번호 정책 위반 문제를 해결한 뒤 root 재로그인까지 성공했으며, Splunk DB Connect 연동에 유리한 인증 방식도 함께 확인했습니다.
9. 추가 작업 기록 (DB Connect 연동 준비 단계)
9-1. Splunk 전용 계정 생성
DB Connect 연동을 위해 최소 권한 원칙에 따라 별도의 계정을 생성했습니다.
CREATE USER 'splunk'@'%' IDENTIFIED BY 'Splunk123!';
GRANT SELECT ON *.* TO 'splunk'@'%';
FLUSH PRIVILEGES;
- root 계정 사용 금지 (보안)
- 읽기 전용 SELECT 권한만 부여
- '%' 허용으로 원격 접속 가능하도록 설정
9-2. DB 및 테이블 구조 확인
SHOW DATABASES;
USE demo_db;
SHOW TABLES;
DESC web_access_logs;
demo_db 내부에 web_access_logs, system_metrics 등 로그성 테이블이 존재하며, Splunk 수집 대상 데이터로 적합한 구조를 확인했습니다.
9-3. bind-address 확인
cat /etc/my.cnf | grep bind
설정이 존재하지 않아 모든 인터페이스에서 접속 허용 상태로 판단됩니다.
9-4. 원격 접속 테스트 (중요)
mysql -h 192.168.200.71 -u splunk -p
Welcome to the MySQL monitor.
원격 접속 정상 확인 → Splunk DB Connect 연결 가능 상태 확보
9-5. 핵심 기술 포인트 정리
| 항목 | 내용 |
|---|---|
| 계정 전략 | splunk 전용 계정 생성 (least privilege) |
| 권한 | SELECT only |
| 접속 방식 | '%' 허용 → 원격 JDBC 대응 |
| 네트워크 | bind-address 미설정 → 전체 인터페이스 허용 |
| 검증 | CLI 원격 접속 성공 |
10. DB Connect 연결 전 최종 체크리스트
- MySQL Port (기본 3306) 방화벽 오픈 여부
- splunk_user → 실제 DB 접근 가능 여부
- JDBC Driver (mysql-connector-java) 버전 호환성
- DB Connect Connection Test 성공 여부
- Timezone 설정 (log_time 필드 중요)
✔ MySQL 인증 문제 해결 완료
✔ splunk 계정 생성 완료
✔ 원격 접속 테스트 성공
→ Splunk DB Connect 연동 가능 상태
11. Splunk DB Connect 실제 연결 설정
11-1. Database Connection 생성
Connection Name: mysql_demo
Database Type: MySQL
Host: 192.168.200.71
Port: 3306
Database Name: demo_db
Username: splunk
Password: Splunk123!
11-2. JDBC URL
jdbc:mysql://192.168.200.71:3306/demo_db?useSSL=false&serverTimezone=UTC
- useSSL=false → SSL 오류 방지
- serverTimezone=UTC → 시간 불일치 방지
12. Connection Test 결과 해석
성공 케이스
네트워크 / 인증 / DB 접근 모두 정상
실패 케이스
1) Access denied
ERROR 1045
2) Communications link failure
방화벽 또는 포트 문제
3) Public Key Retrieval is not allowed
jdbc:mysql://192.168.200.71:3306/demo_db?useSSL=false&allowPublicKeyRetrieval=true
13. Splunk 데이터 수집 검증
Input Query
SELECT * FROM web_access_logs
Splunk Search
index=db_connect
| table log_time, client_ip, request_uri, status_code
- log_time → timestamp 변환
- client_ip → 필드 인식
- status_code → 숫자형 유지
14. 최종 결론 (강화)
MySQL 인증/계정/네트워크 문제를 모두 해결하고, Splunk DB Connect 연동 및 데이터 조회까지 가능한 상태를 확보했다.
'Splunk' 카테고리의 다른 글
| 데이터 수집 | Splunk Add-on for Google Cloud Platform 수집 가능 데이터 정리 (0) | 2026.06.10 |
|---|---|
| [Splunk] Cluster Master & Buckets 핵심 정리 (0) | 2025.08.27 |
| [Splunk] 인덱서 클러스터(Indexer Clustering) (2) | 2025.08.26 |
| [ Splunk ] Indexing Internals (1) | 2025.08.25 |
| [ Splunk ] Event Processing (2) | 2025.08.24 |