在使用MySQL數(shù)據(jù)庫時,由于某些原因長時間沒有登陸MySQL,或者由于工作交接完成度不高,導(dǎo)致數(shù)據(jù)庫root登陸密碼忘記,如何解決?
一、更改my.cnf配置文件
1、用命令編輯/etc/my.cnf配置文件,即:vim /etc/my.cnf 或者 vi /etc/my.cnf 或者 nano /etc/my.cnf
2.在[mysqld]下添加skip-grant-tables,然后保存并退出
3.重啟mysql服務(wù):service mysqld restart
二、更改root用戶名
1、重啟以后,執(zhí)行mysql命令進入mysql命令行
2、修改root用戶密碼
MySQL> UPDATE mysql.user SET Password=PASSWORD('新密碼') where USER='root';
MySQL> flush privileges;
MySQL> exit
注意:以上是5.7之前的版本使用,5.7之后的版本沒有Password字段,password字段改成了authentication_string
mysql> update mysql.user set authentication_string=password(‘root123456') where user='root'; #修改密碼成功
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> flush privileges; #立即生效
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
n>mysql -u ******* -p #以該用戶登錄成功.
Enter password: ********
…………………………
mysql>
注意:5.7之后的版本,密碼不能過于簡單,如123456,否則會報以下錯誤:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。
此時,要么把密碼設(shè)置復(fù)雜點,要么修改配置:
這個其實與validate_password_policy的值有關(guān)。
validate_password_policy有以下取值:
默認是1,即MEDIUM,所以剛開始設(shè)置的密碼必須符合長度,且必須含有數(shù)字,小寫或大寫字母,特殊字符。
有時候,只是為了自己測試,不想密碼設(shè)置得那么復(fù)雜,譬如說,我只想設(shè)置root的密碼為123456。
必須修改兩個全局參數(shù):
首先,修改validate_password_policy參數(shù)的值
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
1
2
validate_password_length(密碼長度)參數(shù)默認為8,我們修改為1
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
1
2
4,完成之后再次執(zhí)行修改密碼語句即可成功
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
3、最后把/etc/my.cnf中的skip-grant-tables注釋掉,然后重啟mysql,即:service mysqld restart
OK,下面我們就可以使用root新的密碼登錄MySQL了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。