본문 바로가기
우당탕탕 개발생활/_Database

[MySQL] Access is denied 오류 해결 방법

by J-2n 2022. 1. 6.

Statement cancelled due to timeout or client request

Access is denied


아침에 출근 하고 보니 어제까지 잘 작동하던 톰캣 서버에서 로그인이 안되는 현상이 발생했다.

톰캣 로그를 확인 로그인 전의 기본적 SELECT문들은 정상적으로 조회되고 있었다.

같은 MySQL 서버를 사용하는 동료분께서 어제 테스트하면서 MySQL 서버 설정을 바꾸는 쿼리를 실행시켰다는 말을 듣고 예상할 수 있었다.


해결하기 위해서는 우선 아래 쿼리를 실행시킨다.

show [FULL] processlist

위 쿼리를 MySQL 에서 조회해보면 현재 실행중인 스레드들이 보인다.

*[FULL] 키워드는 없어도 된다. 없으면 문장의 100자까지만 표시 된다.

위의 결과 테이블이 오류가 발생했던 이유이다.

State 결과값에 'Waiting for global read lock' 이 연달아 표시 되어 있다. 앞전에 SET GLOBAL read_only =ON 이라는 명령어를 실행하게 되면서 Lock 이 걸린 것이다.


*해결방안

Lock 걸린것을 풀어주기 위해서는 위에서 조회한 결과값에서 id값을 아래 명령어와 같이 입력해준다.

KILL [id]

위 명령어로 lock 걸린것을 죽여주면 아래 lock 걸린 쿼리들도 사라지고 정상 작동하게 된다.