리눅스에서는 대부분 mysql DB를 사용하게 되는 자주 로그인을 안한다든지 아니면 패스워드 입력시 잘못된 오타로 인하여 root 접속이 안될때는 난감한 경우가 있습니다..

이럴때 패스워드 복구 하는 방법이 있습니다..가장 먼저 할것은 우선 mysqld 데몬을 중지 시킵니다.
그런후에

# /usr/bin/mysqld_safe 를 먼저 찾는다.

다음과 같이 명령어를 적습니다.

[root@www bin]# ./mysqld_safe --skip-grant &

다음과 같이 데몬이 안전모드로 실행이 됩니다..

[root@www bin]# Starting mysqld daemon with databases from /var/lib/mysql

그런후에 아래와 같이 mysql 명령어를 입력하면 다음과 같이 패스워드 없이 접속이 됩니다.

[root@www bin]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45 Source distribution

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

mysql> use mysql;   --> db를 mysql로 바꾸어줍니다.
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed



그런다음 아래와 같은 명령어를 사용하면 새로운 패스워드가 업데이트 되는 것을 알수 있다.

mysql> update user set password=password('새로운 패스워드') where user='root';
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0


다시한번 mysql에 적용하기 위하여 아래와 같은 명령어를 적어 줍니다.

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

mysql> quit


그런후에 mysqld 데몬을 다시 정상적으로 start 시킨후 새로 업데이트 된 root 패스워드로 접속을 해 보면 접속이 가능합니다..

다시 말해서 조금 더 쉽게 말한다면 리눅스나 유닉스 등에서 시스템 권한이 이미 root 로 넘어 갔다고 한다면 누구도 db root 패스워드를 쉽게 바꿀수 있다는 이야기입니다.  mysql db 가 절대 안전하다고 할수 없다는 이야기가 되겠죠...

긴급하게 mysql  root 패스워드를 잊어버려 당황하여 안절 부절 못하는 경우가 있지만 보안에 대해서는 약간 취약 하다고 하겠습니다... 참고 하시기 바랍니다.

신고
Posted by 엔시스