Application Servers & Java

[장애 사례] WebLogic JDBC 커넥션 풀 초기화 실패 - Access Denied for MySQL 사용자

midworker 2025. 5. 15. 19:01
반응형

[장애 사례] WebLogic JDBC 커넥션 풀 초기화 실패 - Access Denied for MySQL 사용자

WebLogic 서버 기동 중 다음과 같은 JDBC 커넥션 풀 에러가 발생하며
MySQL DB 접속에 실패한 사례입니다.


✅ 에러 로그 요약

<BEA-001129> <Received exception while creating connection for pool "mysqlds":
Access denied for user 'dba'@'172.**.***.10' (using password: YES).>
java.sql.SQLException: Access denied for user 'dba'@'172.**.***.10' (using password: YES)

→ WebLogic에서 MySQL 데이터소스 mysqlds에 대한 커넥션을 생성하려는 시점에서
접속 거부(Access Denied) 오류가 발생함


✅ 원인 분석

원인 설명
DB 사용자 인증 실패 ID/PW 불일치 또는 권한 없음
접속 호스트 제한 MySQL에서 dba@172.%.%.%에 대해 권한 미부여
비밀번호 암호화 방식 불일치 mysql_native_password vs caching_sha2_password
WebLogic JDBC 설정 오류 URL 또는 사용자/비밀번호 오타 가능성

✅ 진단 포인트

1. MySQL 사용자 권한 확인

SELECT host, user FROM mysql.user WHERE user = 'dba';

host 컬럼이 %가 아니거나, 172.x.x.x에 대한 항목이 없을 수 있음


2. 실제 로그인 테스트

mysql -u dba -p -h <DB IP> -P <PORT>

→ WebLogic과 동일한 환경에서 직접 접속 시도하여 재현 여부 확인


3. 비밀번호 해시 방식 확인

MySQL 8.0 이상에서는 기본 인증 플러그인이 caching_sha2_password입니다.
→ WebLogic JDBC 드라이버가 해당 인증을 지원하지 않으면 접속 실패 발생

SELECT user, plugin FROM mysql.user WHERE user = 'dba';

pluginmysql_native_password로 설정되어야 함


✅ 조치 방법

✔ 1. DB 사용자에 권한 재부여

GRANT ALL ON *.* TO 'dba'@'172.%.%.%' IDENTIFIED BY '비밀번호';
FLUSH PRIVILEGES;

→ 명시적으로 해당 호스트에서 접속 가능하도록 설정


✔ 2. 비밀번호 해시 방식 변경

ALTER USER 'dba'@'%' IDENTIFIED WITH mysql_native_password BY '비밀번호';

→ WebLogic에서 호환되지 않는 해시 방식 문제 해결


✔ 3. WebLogic JDBC 설정 점검

  • JDBC URL: 포트, 호스트, 파라미터 확인
    예: jdbc:mysql://172.xxx.xxx.10:3306/dbname?useSSL=false
  • ID/PW 오타 또는 암호화 여부 확인
  • 드라이버 버전: MySQL 8.x 드라이버 vs WebLogic 호환 여부 검토

✅ 마무리

WebLogic의 JDBC 커넥션 풀 구성 시 Access denied 오류는
다음 3가지 요소에서 발생하는 경우가 많습니다:

  1. DB 사용자 계정/권한 설정 오류
  2. MySQL 인증 방식(플러그인) 불일치
  3. WebLogic 설정값 오탈자 또는 드라이버 비호환

기동 시 커넥션 풀 오류가 발생하면 서비스 전체 지연이나 배포 실패로 이어질 수 있으므로,
DB 계정 권한, 비밀번호 정책, 드라이버 호환성을 반드시 사전 점검하세요.


반응형