사이트 내 전체검색
PHP
MySQL root 비밀번호 까먹었을경우..
로빈아빠
https://cmd.kr/php/254 URL이 복사되었습니다.

본문

루트 비밀번호를 까먹었을 경우


(1) 비밀번호 인증없이 루트권한으로 접속하는 방법과

 

(2) 루트 비밀번호를 재설정하는 방법입니다.



자~ 다음과 같이 비밀번호가 '1111'인 mysql 서버가 있습니다.


근데 비밀번호가 1111이란 것을 까먹었어요.


그럼 다음과 같은 순서로 처리가 가능합니다.


(1)


먼저 net start mysql 명령으로 서버를 중지시킵니다.



C:\mysql\bin>mysql -uroot -p1111
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.0.21-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> \q
Bye

C:\mysql\bin>net stop mysql
MySQL 서비스를 멈춥니다..
MySQL 서비스를 잘 멈추었습니다.



그러면 mysql이 멈추겠죠?

 

그다음은 다음과 같은 명령으로 권한을 스킵(건너뛰는~) 하도록 명령을 실행합니다.



C:\mysql\bin>mysqld-nt --skip-grant



그러면 커맨드 창이 멈춥니다  OTL=33


이상황은 저도 어떻게 설명을 드려야 할지 ;;;;


그러면 과감히 커맨드 창 X를 꾸욱 누르시고


실행(R)-cmd-mysql 디렉토리 접근( <<-----요거 맨날 하는 것이니 잘아시겠죠? )


 

Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\Documents and Settings\Administrator>cd\

C:\>cd mysql

C:\mysql>cd bin



위와 같이 하는 것! 말로하면 잘 이해 못하시더라구요.


그다음 다음과 같이 mysql에 접속해봅시다.



C:\mysql\bin>mysql

 

또는

 

C:\mysql\bin>mysql -u root -p

 


그러면 접속이 될까요?



접속이 됩니다.


앞의 mysqld-nt --skip-grant라는 명령이 사용자 인증없이 mysql 서버에 접속할 수 있도록 만든 것이죠~


다음과 같이 접속이 됩니다.



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

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

 

현재 상태는 우리가 알고 있는 Guest 계정과 Root 계정 모두 Root의 역할을 하므로


mysql 데이터베이스에 접근이 됩니다.


여기까지가 (1) 비밀번호 인증없이 루트권한으로 접속하는 방법이었습니다.

 

 

(2)

 

루트 비밀번호 재설정 하는 방법은 우리가 처음에 배웠던 내용과 같습니다.

 


mysql> use mysql
Database changed
mysql> update user set password=password('1234') where user='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)



보기와 같이 기존의 1111이었던 루트 비밀번호를 1234로 변경하였습니다.


그리고 \q로 서버를 빠져나오세요.


앞의 (1)에서 서버를 중지(net stop mysql) 하였으므로 다시 서버를 시작해봅시다.



C:\mysql\bin>net start mysql
MySQL 서비스를 시작합니다..
MySQL 서비스를 시작할 수 없습니다.

시스템 오류가 발생했습니다.

시스템 오류 1067이(가) 생겼습니다.

프로세스가 예기치 않게 종료되었습니다.



안돼죠??


안되야 정상입니다.


여기서 예리하신 분들은 느끼셨을지도....


비밀번호를 1234로 변환하는 과정에서 우리는 서버를 실행하지도 않고 서버에 접속을 했다는... ㅜㅡ;


무섭죠??


아무튼 상황을 정리해보겠습니다.


mysqld-nt --skip-grant 명령 때문에 우리는 인증 없이 서버에 접속을 할 수 있었고


서버에 접속하여 비밀번호를 1234로 변경하였지만


현재 상태는 아무나 접속이 가능하고 아무나 루트권한을 갖는 위험한 상태입니다.


따라서 처음 보는 파일 이름인 mysqladmin.exe를 이용하여 이를 해결해야 합니다.



C:\mysql\bin>mysqladmin -uroot -p1234 shutdown

C:\mysql\bin>mysql
ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)

C:\mysql\bin>mysql -uroot -p1111
ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)

C:\mysql\bin>mysql -uroot -p1234
ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)

C:\mysql\bin>net start mysql
MySQL 서비스를 시작합니다..
MySQL 서비스가 잘 시작되었습니다.

 

 

mysqladmin -uroot -p1234 shutdown을 통해서 서버를 중단 시키고 다시 net start mysql 명령으로

 

서버를 리스타트 합니다.

 

이제는 앞에서 변경한 비밀번호 1234가 적용된 상태가 됩니다.

 

 

C:\mysql\bin>mysql
ERROR 1045: Access denied for user:
'ODBC@localhost' (Using password: NO)

C:\mysql\bin>mysql -uroot -p1111
ERROR 1045: Access denied for user:
'root@localhost' (Using password: YES)

C:\mysql\bin>mysql -uroot -p1234
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.0.21-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> 성공~!!!

 

 

새로운 비밀번호는 또다시 잃어버리지 않도록 주의 하시구요~!@!

 

간단한 작업 같지만 위의 상황은 엄청난 피해를 불러 일으킬 수도 있습니다.

 

인증과정을 거치지 않는 동안 제3의 인물이 악의를 품고 서버를 조작한다면

 

막대한 피해를 초래할 수도 있습니다.

 

2~3번 반복하시면 그다지 어려운 과정은 아니라는 것은 알 수 있지만

 

이를 남용하면 절대절대 안됩니다.~

 

 

혹시나 프로젝트할 때나 중요한 시기에 루트 비밀번호를 까먹어서 고생하실 때 사용하면 좋겠네요~

 

서버 재설치 안해도 되겠죠~

댓글목록

등록된 댓글이 없습니다.

PHP
871 (1/18P)

Search

Copyright © Cmd 명령어 18.117.115.142