마스터포유(Master4U)
Monday, 17 of January
 

로그인 Category
[OOPS] Forgotten MySQL Password
김인호  2008-01-12 17:23:55 Hit:1648
링크 #1: http://oops.org/?t=lecture&sb=mysql&n=2




강좌의 모든 권리는 본인 김정균에게 있으며 이 강좌를 상업적 목적 으로 이용
하거나 다른 곳으로 옮길시에는 본인의 허락이 있어야 한다. 이글의 가장 최신글은
http://www.oops.org 에서 확인할수 있다.

WARNNING


Forgotten MySQL Password

이번 페이지 에서는 MySQL 의 root 암호를 잃어 버렸을때에 대처할 수 있는 방법을 알아본다.

우선 다음과 같이 MySQL 서버데몬을 내린다.

Hanterm - killall mysqld

 [root@bbuwoo mysql]# ps -aux | grep my | grep -v grep

  root 7646 0.0 0.6  1668 808 pts/4 S  09:42 0:00 sh ./bin/safe_mys 
  root 7740 0.0 0.7 10784 980 pts/4 SN 09:45 0:00 /usr/local/mysql/ 
  root 7742 0.0 0.7 10784 980 pts/4 SN 09:45 0:00 /usr/local/mysql/ 
  root 7743 0.0 0.7 10784 980 pts/4 SN 09:45 0:00 /usr/local/mysql/ 

 [root@bbuwoo mysql]# kill -9 7646 7740 7742 7743 

  [1]+ Killed ./bin/safe_mysqld 

 [root@bbuwoo mysql]$

다음 --skip-grant 옵션을 이용 권한테이블을 사용하지 않는 옵션으로 데몬을 띄운다. 

Hanterm - killall mysqld

 [root@bbuwoo mysql]# ./bin/safe_mysqld --skip-grant & 

  [1] 7759 

 [root@bbuwoo mysql]# kill 7743: No such process 

  Starting mysqld daemon with databases from /usr/local/mysql/data 

 [root@bbuwoo mysql]#

여기서  kill 7743: No such process 과 같은 메시지는 safe_mysqld 스크립트가 가장 마지막에
실행 중이던 데몬의 프로세스를 죽이고 다시 시작하려다 못찾아 나오는 에러 메시지 이지만 그
냥 데몬이 떠 버렸으니 신경 쓰지 않아도 된다. 

프로세스를 확인해 보면.... 

Hanterm - killall mysqld

 [root@bbuwoo mysql]# ps -aux | grep my | grep -v grep

  root 7759 0.0 0.6 1668 812 pts/4 S 09:49 0:00 sh ./bin/safe_mys 
  root 7775 0.0 0.5 2520 696 pts/4 SN 09:49 0:00 /usr/local/mysql/ 
  root 7777 0.0 0.5 2520 696 pts/4 SN 09:49 0:00 /usr/local/mysql/ 
  root 7778 0.0 0.5 2520 696 pts/4 SN 09:49 0:00 /usr/local/mysql/ 

 [root@bbuwoo mysql]#


이 상태에서는 권한 테이블을 사용하지 않으므로 어떤 호스트에서도 아무 사용자로 모든 DB 에
접속이 가능하다. 빨리 작업을 끝내고 권한을 설정해 DB 를 다시 띄워야 한다.

권한 설정 제한이 없으니 간단하게 root 로 로그인을 하도록 한다. 권한을 설정하는 데이타 베
이스 mysql 을 이용한다.

Hanterm - mysql -uroot mysql


 [root@bbuwoo mysql]# ./bin/mysql -u root mysql 

  Reading table information for completion of table and column names 
  You can turn off this feature to get a quicker startup with -A 

  Welcome to the MySQL monitor. Commands end with ; or \\g. 
  Your MySQL connection id is 1 to server version: 3.23.42 

  Type 'help' for help. 

  mysql> 
  mysql> UPDATE user SET Password=PASSWORD('newpasswd') WHERE user='root'; 

  위와 같이 패스워드를 수정한다.

  Query OK, 1 row affected (0.02 sec) 
  Rows matched: 2 Changed: 1 Warnings: 0 

  mysql> FLUSH PRIVILEGES; 
  Query OK, 0 rows affected (0.00 sec) 

  권한 테이블을 다시 읽어 들인다.

  mysql> quit
  Bye 

 [root@bbuwoo mysql]#


위의 설정이 완료 되었으면 다시 MySQL 서버 데몬을 재 시작 하도록 한다. 이미 권한이 재설정
되도록 FLUSH PRIVILEGES 옵션을 실행한 상태 이므로 변경한 패스워드를 이용해야 한다.

Hanterm - mysqladmin -uroot -p shutdown


 [root@bbuwoo mysql]# ./bin/mysqladmin -uroot -p shutdown 

  Enter password: *******
  mysqld daemon ended 

  [1]+ Done ./bin/safe_mysqld --skip-grant 

 [root@bbuwoo mysql]#


위의 과정을 통하여 MySQL 을 죽인다음, 다시 권한 테이블을 이용한 원래의 스크립트를 이용하
여 데몬을 다시 띄우도록 한다.

Hanterm - ./bin/safe_mysqld


 [root@bbuwoo mysql]# ./bin/safe_mysqld & 

  [1] 7859 

 [root@bbuwoo mysql]# Starting mysqld daemon with databases from

  /usr/local/mysql/data 

 [root@bbuwoo mysql]#


이제 위에서 변경한 패스워드로 들어갈 수 있는지 다시 테스트를 해 본다. 다음의 방법으로 테
스트를 해 본다.


# ./bin/mysql -uroot -p**** mysql
또는
# ./bin/mysql -uroot -p mysql


보안상 b 방법을 권장한다. (누가 뒤에서 보면 안되니까!) 

Hanterm - mysql -uroot -p mysql


 [root@bbuwoo mysql]# ./bin/mysql -uroot -p mysql 

  Enter password: *****
  Reading table information for completion of table and column names 
  You can turn off this feature to get a quicker startup with -A 

  Welcome to the MySQL monitor. Commands end with ; or \\g. 
  Your MySQL connection id is 1 to server version: 3.22.22 

  Type 'help' for help. 

  mysql> select Host ,User from user ; 
  +-------------------+-------+ 
  | Host              | User  | 
  +-------------------+-------+ 
  | localhost         | root  | 
  | 210.xxx.xx.xxx    | root  | 
  | localhost         | mysql | 
  +-------------------+-------+ 
  5 rows in set (0.00 sec) 

  mysql> quit

 [root@bbuwoo mysql]#



>> 이전 : MySQL Replication
>> 다음 : MySQL For over 500 Connections


    


본문인쇄본문메일발송
MySQL For over 500 Connections [1]
[OOPS] MySQL Replication
Copyright 1999-2019 Zeroboard / skin by ChanBi