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) 실행 |
'LEMP stack > MySql' 카테고리의 다른 글
처음 DB 관리 도구를 써보는 사람이라면 HeidiSQL로 시작해보자 (0) | 2025.04.20 |
---|---|
Ubuntu에서 최신 MySQL 설치하고 보안 설정하는 법 (2025년 기준) (0) | 2025.04.19 |