首先確保服務器處於安全模式,因為修改密碼期間數據庫處於沒有密碼保護的狀態。
進行如下操作:
1、關閉mysql服務 sc stop mysql
2、以安全模式啟動mysql
mysqld -- skip-grant-tables
建議通過修改配置文件實現安全啟動:
vi /etc/my.cnf
在[mysqld]段中加上一句: skip-grant-tables
保存並退出
3、重新啟動mysqld
service mysqld restart
4、登陸mysql
直接輸入mysql -u root -p 回車, (忽略密碼)再回車;
5、更改root密碼
UPDATE mysql.user SET Password=PASSWORD('xxx') where USER='root';
更改密碼時出現錯誤:
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
原因:數據庫下沒有Password字段
解決辦法:
查找數據庫mysql的user表
show databases;
use mysql;
show tables;
select * from user;
發現沒有Password字段,Password字段改成了authentication_string
使用該字段重新修改root密碼即可:
update mysql.user set authentication_string=password('xxx') where user='root' ;
注意: mysql新版本用於存用戶密碼的字段名為authentication_string而不是 password,且新密碼必須使用password函數進行加密
6、修改完密碼以后再打開配置文件,將skip-grant-tables注釋掉。
vi /etc/my.cnf
#skip-grant-tables
7、重新運行mysql,即可使用新密碼進行登陸。
service mysqld restart