LEMP stack/MySql

mysql_secure_installation 비밀번호 오류 해결 가이드 (MySQL root 비번 없이 시작하는 경우)

itsdev 2025. 4. 19. 16:00
반응형

MySQL을 설치한 직후, sudo mysql_secure_installation을 실행하면 다음과 같은 에러를 만나는 경우가 있다:

Enter password for user root:
Error: Access denied for user 'root'@'localhost' (using password: YES)

 

문제는 명확하다. 비밀번호 설정을 한 적이 없는데도 비밀번호를 요구한다는 점이다.
이 글에서는 이 문제의 원인을 이해하고, 비밀번호 없이 루트 계정에 접근해 비밀번호를 설정한 후, mysql_secure_installation을 정상적으로 실행할 수 있도록 하는 전 과정을 정리한다.

📌 1단계: 문제 원인 이해하기

MySQL 8.0 이후 Ubuntu에서 설치한 경우, root@localhost 계정은 기본적으로 비밀번호 없이 socket 인증을 사용한다.
그런데 특정 상황(이전 설정 변경, 수동 설치 등)에서는 root 계정이 이미 mysql_native_password 를 사용하도록 설정되었을 수 있다. 이 경우 비밀번호 없이 접속이 막히게 된다.

📌 2단계: 현재 MySQL에 접속이 안 되는 상태 확인

sudo mysql

 

또는

mysql -u root -p

 

둘 다 아래 에러가 뜬다면, root 인증이 막힌 상태이다.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

📌 3단계: 안전 모드(skip-grant-tables)로 MySQL 실행

이제 MySQL을 인증 없이 접속할 수 있는 모드로 재시작하자.

 

3-1. MySQL 서버 중지

sudo systemctl stop mysql

 

3-2. 로그 디렉토리 존재 확인 및 권한 부여

sudo mkdir -p /var/log/mysql
sudo chown -R mysql:mysql /var/log/mysql

 

3-3. 소켓 디렉토리 생성 및 권한 설정

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld

 

3-4. 안전 모드 실행

sudo mysqld_safe --skip-grant-tables --skip-networking &

→ 정상이라면 "mysqld daemon with databases from /var/lib/mysql" 메시지가 뜨고 멈춰 있을 것이다.

📌 4단계: 새 터미널에서 MySQL 접속

이제 새로운 터미널을 열고 비밀번호 없이 root 접속 시도

mysql -u root

→ 프롬프트가 보이면 성공이다.

📌 5단계: root 계정 비밀번호 및 인증 방식 재설정

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY Str@NgPassw@rd';
FLUSH PRIVILEGES;
EXIT;
비밀번호는 네가 원하는 강력한 것으로 바꿔도 된다.

📌 6단계: 안전모드 종료 & 정식 MySQL 서비스 시작

sudo killall mysqld
sudo systemctl start mysql

📌 7단계: 정상 접속 확인

mysql -u root -p

→ 아까 설정한 비밀번호 입력 → 성공적으로 접속되면 완료다.

📌 8단계: 이제 mysql_secure_installation 실행

sudo mysql_secure_installation

이제는 정상적으로 실행되며 root 비밀번호도 정상 인식된다.
이 과정에서 다음 설정을 마무리하면 된다:

  • 익명 사용자 제거
  • 원격 root 로그인 비활성화
  • test DB 삭제
  • 권한 테이블 리로드

모두 y를 눌러 진행하면 MySQL 보안 설정이 완료된다.

✅ 마무리 요약

단계         설명

1 root 계정 접근 실패 원인 분석
2 인증 없이 접속 가능한 안전 모드 실행
3 비밀번호 재설정 및 인증 방식 변경
4 MySQL 정상 모드 재시작
5 보안 설정 마무리 (mysql_secure_installation) 실행
728x90
반응형
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.