mysql 패스워드 변경 방법 및 패스워드 변경 스크립트

MySQL에서 사용하는 root 패스워드를 분실했을때, 다음과 같은 방법으로 바꿀 수 있다.

1. MySQL 데몬을 중지 시킨다.

[root@localhost mysql]# killall mysqld (또는 pkill -9 mysqld)

2. –skip-grant 옵션을 주어서 mysql 데몬은 다시 실행시킨다.

[root@localhost mysql]# /usr/local/mysql/bin/safe_mysqld –skip-grant &
Starting mysqld daemon with databases from /usr/local/mysql/var

3. 패스워드 없이 root 계정으로 mysql에 접속한다.mysql%ed%8c%a8%ec%8a%a4%ec%9b%8c%eb%93%9c-%eb%b3%80%ea%b2%bd-1

[root@localhost 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 970 to server version: 3.22.32

Type ‘help’ for help.

mysql>

4. mysql> 프롬프트에서 update 쿼리문으로 패스워드를 재설정 한다.

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

Query OK,  1  row affected (0.01 sec)
Row matched:2   Changed:  1  Warnungs:  0

5. 변경사항을 적용시킨다.

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.05 sec)

6. mysql> 프롬프트에서 빠져 나온다.

mysql> quit

Bye

7. mysql 데몬을 재시작 한다.

[root@localhost mysql]# killall mysqld (또는 pkill -9 mysqld)
[root@localhost mysql]# /usr/local/mysql/bin/safe_mysqld &
[1] 10008
[root@localhost mysql]# Starting mysqld daemon with databases from /usr/local/mysql/data

8. 업데이트한 패스워드로 mysql에 접속한다.

[root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p
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.32

Type ‘help’ for help.

mysql>

 

====================================================
#!/bin/sh
echo “mysql 데몬을 중지 합니다”
pkill mysqld
sleep 4
echo “mysql 데몬을 시작 합니다”
/usr/local/mysql/bin/mysqld_safe –skip-grant &
sleep 4
echo ” ”
echo “mysql 패스워드를 변경합니다.”
echo ” ”
echo “변경할 mysql root 패스워드를 입력하시오”
read newpassword
echo “use mysql;
update user set password=password(‘$newpassword’) where user=’root’;
flush privileges;” > insert_query
echo ” ”
/usr/local/mysql/bin/mysql -u root < insert_query
rm -rf insert_query
echo “mysql 데몬을 중지 합니다”
pkill mysqld
sleep 4
echo “mysql 데몬을 시작 합니다”
/usr/local/mysql/bin/mysqld_safe &
sleep 4
echo ” ”
echo “mysql 패스워드가 $newpassword로 변경되었습니다”
echo ” ”

====================================================

====================================================
#!/bin/sh
echo ” ”
echo “현재의 mysql root 패스워드를 입력하시오”
echo ” ”
echo “mysql root 패스워드가 설정되어 있지 않으면 그냥 enter를 입력”
read oldpassword
echo ” ”
echo “변경할 mysql root 패스워드를 입력하시오”
read newpassword
echo “use mysql;
update user set password=password(‘$newpassword’) where user=’root’;
flush privileges;” > insert_query
echo ” ”
sleep 1
echo “mysql root 패스워드를 변경합니다.”
echo ” ”
sleep 1
echo “패스워드를 묻는 창이 뜰 경우는 현재의 mysql 패스워드를 입력하세요.”
if /usr/local/mysql/bin/mysql -u root -p$oldpassword < insert_query; then
echo ” ”
sleep 1
echo “mysql root 패스워드가 $newpassword로 변경되었습니다”
echo ” ”
else
echo ” ”
echo “패스워드가 맞지 않습니다. 다시 시도하시오”
echo ” ”
fi
rm -rf insert_query
====================================================

====================================================
#!/bin/sh
echo ” ”
echo “변경할 mysql root 패스워드를 입력하시오”
read password
echo ” ”
echo “mysql root 패스워드를 변경합니다. 현재의 mysql root 패스워드를 입력하세요.”
echo ” ”
if /usr/local/mysql/bin/mysqladmin -u root -p password “$password”; then
echo ” ”
echo “mysql root 패스워드가 변경되었습니다”
echo ” ”
else
echo ” ”
echo “패스워드가 맞지 않습니다. 다시 시도하시오”
echo ” ”
fi
====================================================