Ghost 관리자 로그인 “Too many attempts” 해결 방법 (Docker + MySQL 환경)
Ghost 관리자 페이지에 로그인하려고 할 때 아래와 같은 에러가 발생할 수 있다.
Too many attempts. Please try again later.
이 에러는 단순한 로그인 실패가 아니라,
Ghost의 보안 기능(브루트포스 방지)에 의해 로그인 시도가 차단된 상태다.
특히 여러 번 인증코드를 잘못 입력하거나 로그인 실패가 반복되면 발생한다.
📌 문제 원인
Ghost는 로그인 시도 기록을 데이터베이스에 저장한다.
이 기록이 일정 횟수를 넘으면 해당 계정 또는 IP를 잠시 차단한다.
이 정보는 보통 아래 테이블에 저장된다:
brute→ 로그인 시도 제한 기록sessions→ 세션 정보
즉, 이 테이블에 기록이 남아 있으면 계속 차단 상태가 유지된다.
🧱 환경
이 글은 아래 환경 기준으로 작성됨:
- Docker + docker-compose
- Ghost + MySQL (MariaDB 포함 가능)
- DB 볼륨 마운트 사용 (
/var/lib/mysql)
🚀 해결 방법
1️⃣ MySQL 컨테이너 접속
먼저 실행 중인 컨테이너 확인:
docker ps
* 만약 자신이 컨테이너 이름을 ghost로 해놓았다면 밑의 명령어를 사용하면 더 가독성이 좋다.
docker ps | grep ghost 결과:

본인의 MySQL 컨테이너 이름을 확인한 뒤 접속:
docker exec -it <자신의 MySQL 컨테이너 이름> mysql -u root -p
예시.
docker exec -it ghost-mysql mysql -u root -pghost-mysql은 예시이며, docker ps 명령어로 나온 자신의 컨테이너 이름에 맞게 수정해야 한다.docker exec -it ghost-mysql mysql -u root -p 결과:
root@ubuntu:/docker/ghost/data/mysql# docker exec -it ghost-mysql mysql -u root -p
Enter password: 자신이 설정한 MySQL DB의 root 계정 비밀번호 입력2️⃣ Ghost 데이터베이스 선택
USE ghost;

3️⃣ 로그인 제한 기록 삭제
TRUNCATE TABLE brute;
추가로 세션도 초기화:
TRUNCATE TABLE sessions;
실제로 테이블 안의 내용이 비워졌는지 확인:
SELECT * FROM brute;SELECT * FROM sessions;
4️⃣ Ghost 컨테이너 재시작
docker restart ghost
5️⃣ 다시 로그인
이제 /ghost 관리자 페이지에 다시 접속하면 정상적으로 로그인 가능하다.
🔍 TRUNCATE vs DELETE (짧은 설명)
DELETE→ 조건으로 일부 삭제 (느림)TRUNCATE→ 테이블 전체 데이터 즉시 초기화 (빠름)
여기서는 전체 기록을 지우는 것이 목적이므로 TRUNCATE를 사용한다.
⚠️ 주의사항
users테이블은 절대 건드리지 말 것TRUNCATE는 되돌릴 수 없음- 운영 환경에서는 남용 금지
💡 정리
- “Too many attempts”는 서버 문제가 아니라 DB에 저장된 제한 상태
- 해결 방법은 간단하다:
→brute테이블 초기화
😎 한 줄 요약
Ghost 로그인 제한은 DB에 저장된다 → TRUNCATE brute로 즉시 해제 가능