이 가이드는 Windows와 Linux 환경에서 분실하거나 잊어버린 MySQL 루트 비밀번호를 재설정하는 방법을 단계별로 자세히 설명합니다.
배경
MySQL 루트 비밀번호를 잊어버린 적이 있으신가요? 아무리 철저하게 관리해도 이런 일은 언제든 발생할 수 있습니다. 그 결과 데이터베이스 서버에 접근할 수 없게 되고, 새로운 데이터베이스를 생성할 수 없으며 서버 상태를 제어할 방법도 사라집니다. 이런 상황에서 루트 권한을 다시 확보하는 방법을 알고 있다면 큰 도움이 됩니다. 지금부터 Windows와 Linux에서 MySQL 루트 사용자의 비밀번호를 재설정하는 방법을 하나씩 살펴보겠습니다.
Windows에서 MySQL 루트 비밀번호 재설정하기
관리자(Administrator) 권한으로 서버에 로그인한 후, 실행 중인 MySQL 서버를 종료합니다. Windows 서비스 관리자를 사용하려면 시작 메뉴 → 제어판 → 관리 도구 → 서비스 순서로 이동한 뒤 MySQL 서비스를 찾아 중지하면 됩니다. 만약 목록에 MySQL이 보이지 않는데도 프로세스가 실행 중이라면, MySQL이 서비스 형태가 아닌 일반 프로세스로 구동 중인 것입니다. 이 경우 Ctrl+Alt+Del 키 조합으로 작업 관리자를 열고 MySQL 프로세스를 직접 종료하세요.
MySQL 프로세스가 중지되면 UPDATE와 FLUSH 옵션을 조합해 비밀번호 변경을 강제로 적용해야 합니다. 선호하는 텍스트 편집기를 열고 새 파일을 만든 후, 아래 내용을 입력하세요. "NewMySQLPassword"는 본인이 사용할 새 비밀번호로 바꿔주시면 됩니다:
UPDATE mysql.user SET Password=PASSWORD("NewMySQLPassword") WHERE User='root'; FLUSH PRIVILEGES;
첫 번째 명령문은 mysql.user 테이블에서 'root' 사용자의 'Password' 필드 값을 "NewMySQLPassword"로 업데이트합니다. 두 번째 명령문은 기존 권한 설정을 초기화하여 새 비밀번호가 시스템 전반에 적용되도록 합니다. 이 파일을 C:\mysql_reset.txt라는 이름으로 저장합니다.
다음으로, 이 파일을 구성 매개변수로 전달하며 MySQL 서버를 시작해야 합니다. 시작 메뉴 → 실행(Run)을 연 다음 cmd를 입력하고 Enter 키를 눌러 터미널을 실행합니다. 그리고 아래 명령어를 입력하세요:
C:\mysql\bin\mysqld-nt --init-file=C:\mysql_reset.txt
서버 기동이 완료되면 C:\mysql_reset.txt 파일을 삭제합니다. 이제 MySQL 루트 비밀번호가 재설정되었습니다. Windows 서비스 관리자로 돌아가 MySQL 서버를 다시 시작하면, 새로운 루트 비밀번호로 정상적으로 로그인할 수 있습니다.
Linux에서 MySQL 루트 비밀번호 재설정하기
루트(root) 사용자로 Linux 머신에 로그인합니다. 전체 절차는 다음과 같습니다. ① MySQL 서버를 중지하고, ② 권한 검증 없이 서버를 재시작해 비밀번호 없이 루트로 로그인한 뒤, ③ 새 비밀번호를 설정하고, ④ 서버를 정상 모드로 다시 시작합니다. 먼저 MySQL 서버를 중지합니다:
# /etc/init.d/mysql stop
이제 --skip-grant-tables 옵션을 사용해 MySQL 서버를 시작합니다. 이 옵션은 권한(grant) 테이블을 로드하지 않은 상태로 서버를 구동합니다:
# mysqld_safe --skip-grant-tables &
명령어 끝의 &(앰퍼샌드)는 해당 명령을 백그라운드 프로세스로 실행하겠다는 의미입니다. 이제 루트 계정으로 MySQL 서버에 로그인합니다:
# mysql -u root
비밀번호를 묻지 않고 바로 접속될 것입니다. 다음 단계를 통해 새 비밀번호를 설정합니다:
mysql> use mysql;
mysql> update user set password=PASSWORD("NewMySQLPassword") where User='root';
mysql> flush privileges;
mysql> quit
"NewMySQLPassword"는 본인이 사용할 비밀번호로 교체하세요. 각 명령의 역할은 다음과 같습니다. 첫 번째 줄은 MySQL 설정 테이블을 선택하고, 두 번째 줄은 'root' 사용자의 'Password' 필드 값을 "NewMySQLPassword"로 업데이트하며, 세 번째 줄은 기존 권한을 초기화해 새 비밀번호가 전체 시스템에 반영되도록 합니다. 마지막으로 서버를 정상 모드로 재시작하고 새 루트 비밀번호로 로그인합니다:
# /etc/init.d/mysql stop
# /etc/init.d/mysql start
# mysql -u root -pNewMySQLPassword
축하합니다! 새로운 MySQL 루트 비밀번호가 성공적으로 설정되었고, 서버를 다시 사용할 수 있게 되었습니다. 이 비밀번호를 다른 애플리케이션에서도 사용 중이라면, 해당 애플리케이션들의 데이터베이스 연결 설정도 반드시 함께 업데이트하는 것을 잊지 마세요.