本篇文章說明 MySQL 如何修改密碼與忘記密碼時如何重設密碼。

設定 root 密碼

一開始安裝好 mysql 時,root 可能尚未設定密碼,可以用以下指令設定

1
mysqladmin -u root password '你的密碼'

或者

1
mysqladmin -u root password

再輸入密碼

修改使用者密碼

方法一

使用有權限或要修改的使用者本身登入 mysql

1
mysql -u 登入使用者 -p

輸入密碼後進入 mysql 控制台,輸入

1
2
mysql> SET PASSWORD FOR '目標使用者'@'主機' = PASSWORD('密碼');
mysql> flush privileges;

例如

1
mysql> SET PASSWORD FOR 'emn178'@'localhost' = PASSWORD('password');

方法二

使用有權限的使用者登入 mysql

1
mysql -u 登入使用者 -p

輸入密碼後進入 mysql 控制台,輸入

1
2
3
mysql> use mysql;
mysql> UPDATE user SET Password=PASSWORD("密碼") WHERE User='目標使用者';
mysql> flush privileges;

例如

1
mysql> UPDATE user SET Password=PASSWORD("password") WHERE User='emn178';

上面是不分主機位址的修改,若要像方法一區分主機的話再加上Host條件,例如

1
mysql> UPDATE user SET Password=PASSWORD("password") WHERE User='emn178' AND Host = 'localhost';

方法三

同樣利用 mysqladmin 指令可以修改 root 或其他使用者密碼,但該使用者必須有 SUPER 權限

1
mysqladmin -u 使用者 -p'舊密碼' password '新密碼'

或者

1
mysqladmin -u 使用者 -p password

再輸入密碼

忘記密碼重設

如果忘記 root 密碼可以用以下方式重設

1
2
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &

用上面方式啟動 mysql 後可以不用輸入密碼直接連入

1
mysql -u root

接者使用修改使用者密碼的方法二修改 root 密碼,例如

1
2
3
4
mysql> use mysql;
mysql> UPDATE user SET Password=PASSWORD("password") WHERE User='root';
mysql> flush privileges;
mysql> quit

最後重新啟動 mysql

1
2
/etc/init.d/mysql stop
/etc/init.d/mysql start