[sql] 리눅스 MySQL root 패스워드 초기화하기

MySQL root 계정 패스워드를 잊어버려서 root 권한 작업을 할 수 없거나, db를 파일 단위로 이전을 해서 root 계정을 초기화 해야할 때 사용할 수 있습니다.

리눅스에 설치된 MySQL 인 경우 기본적으로 루트 권한을 가진 계정으로 로그인을 하거나, 루트 권한으로 커맨드를 실행할 수 있어야 합니다.

패스워드 초기화 방법

  1. 루트 권한을 가진 계정으로 로그인합니다. 또는 su, sudo 를 앞에 붙여서 루트 권한으로 커맨드를 실행해야 합니다.
  2. MySQL 서버를 중지합니다.
    - CentOS: service mysqld stop
    - Ubuntu: service mysql stop

  3. —skip-grant-tables 옵션을 사용해서 MySQL 서버를 다시 시작합니다.
    mysqld_safe --skip-grant-tables &

    - 명령줄 끝에 표시한 "&"는 명령어가 백그라운드에서 실행되도록 합니다.

    - "—skip-grant-tables" 옵션은 권한 재설정이 필요한 경우에만 사용하는 예외적인 옵션입니다. 권한 관련 테이블을 무시하고 MySQL을 실행합니다.
    권한 재설정이 완료된 후에는 mysqld_safe 서버 인스턴스틀 반드시 종료하고 정상적인 방법으로 MySQL을 재실행 해야 합니다.
  4. MySQL에 로그인합니다.
    mysql
  5. mysql> 프롬프트에서 비밀번호를 재설정합니다. 다음 쿼리문을 입력하고 new-password를 새 root 비밀번호로 대체합니다.
    UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
  6. 실행한 쿼리문을 반영하고 MySQL 커맨드 프롬프트를 빠져나옵니다. mysql> 프롬프트에서 다음 명령을 입력합니다.
    FLUSH PRIVILEGES;
    exit;

  7. 다음 명령을 사용하여 mysqld_safe 서버 인스턴스를 중지합니다. MySQL 서버가 종료되기 전에 새 MySQL root 패스워드를 입력하라는 메시지가 나타납니다. 변경한 root 패스워드를 입력합니다.
    mysqladmin -u root -p shutdown
  8. MySQL 서버를 다시 시작합니다.
    - CentOS: service mysqld start
    - Ubuntu: service mysql start