728x90

MySQL root 패스워드 초기화





내가 고자라니!

 설마 이런 일이 발생할 줄은 몰랐지만, 오랫동안 MySQL을 사용하지 않아 root 비밀번호를 잊었는데, 해당 비밀번호를 어디에 기록해놓았는지조차 난감한 상황에 빠졌다.

 일반적으로는 해당 DB의 데이터를 모두 포기하고 초기화해야 하겠지만, 의외로 root 계정에 비밀번호 없이 접근할 수 있는 방법이 있었다. 또한 해당 방법을 이용해 비밀번호를 변경하면 DB의 데이터 손실 없이 계속 사용할 수도 있다.

 해당 방법은 다음의 순서를 거친다.

  1. MySQL 서비스 정지.

  2. 권한 정보를 사용하지 않고 MySQL 재실행.

  3. root 계정으로 접속하여, root 비밀번호 변경.

  4. MySQL 서비스 재실행.

1. MySQL 서비스 정지.

 2가지 방법이 있는데, kill 명령을 사용하거나 해당 서비스를 중지시키는 방법이다.

kill 명령 사용)

# ps -ef | grep mysqld

# killall mysqld

해당 서비스 중지)

$ /etc/init.d/mysql stop

or

$ service mysql stop

※ MySQL 버전과 리눅스 종류에 따라 mysqld 가 아닌 mysql일 수도 있다. 상황에 맞춰 사용하자.

2. 권한 정보를 사용하지 않고 MySQL 실행

$ /usr/bin/mysqld_safe --skip-grant-tables

or

$ /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

※ 경로는 MySQL 버전과 리눅스 종류에 따라 다를 수 있지만 ‘mysqld_safe --skip-grant-tables’ 명령은 동일하다. 명령어 이름으로 유추할 수 있지만 권한 테이블을 사용하지 않고 MySQL을 실행하는 것이다.

3. root 계정으로 접속하여, root 비밀번호 변경.


$ mysql -uroot mysql

mysql> UPDATE user SET password=PASSWORD('변경할패스워드') WHERE user = 'root';

Query OK, 3 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0rows affected (0.01 sec)

mysql> \q

Bye

4. MySQL 서비스 재실행.

 일단 위에서 1의 방법으로 MySQL을 다시 종료시킨다.

 재실행 방법은 2가지가 있는데, 직접 데몬을 실행시키거나 해당 서비스를 실행시키는 방법이다.

직접 데몬 실행)

# ./safe_mysqld &

해당 서비스 실행)

$ /etc/init.d/mysql start

or

$ service mysql start

or

restart 명령을 사용하면 stop-start가 순서대로 자동적으로 실행된다.

$ service mysql restart

※ MySQL 버전과 리눅스 종류에 따라 mysqld 가 아닌 mysql일 수도 있다. 상황에 맞춰 사용하자.

 이후에는 다시 root로 접속하여 원하는 작업을 하면 된다.


# mysql -u root -p

Enter Password : *****

참고한 자료


반응형

+ Recent posts