1. 程式人生 > >MySQL重置密碼

MySQL重置密碼

table 修改密碼 sudo 字段 con 系統 sql命令 可能 entos

MySQL重置密碼

可能由於各種原因,我們不小心丟掉了MySQL密碼,要用的時候無法登陸了,只能重置密碼了!該配置修改文檔是在Linux Ubunt環境下進行的,其他操作系統亦可作為參考,原理一樣!

1) 修改MySQL的配置文件,跳過登錄時的權限驗證

CentOS是在 /etc/my.cnf
Ubunt的mysql配置文件路徑:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

    #在[mysqld]下追加上 skip-grant-tables
    [mysqld]
        ...
    skip-grant-tables
    

2) 重啟mysql服務使配置生效

sudo service mysql restart

3) 重啟完mysql服務之後我們再次執行mysql登錄命令,會發現不用輸入密碼即可登錄.

mysql -u root -p
#回車完會提示輸入密碼,不用輸密碼直接回車即可登錄

4) 重置root賬戶密碼

#重置root密碼為空
update mysql.user set authentication_string="" where user="root";   
#重置 root 用戶的密碼為空(5.7 之前為 password 字段)

#修改root密碼
update mysql.user set authentication_string=password("pswd") where user="root";
#在重置 root 密碼的同時,也可以設置默認密碼。不過密碼不能為明文,必須使用 password() 函數加密

5) 刷新權限表

flush privileges;

重置root密碼,刷新權限表之後退出mysql命令行,將剛在配置文件中添加的跳過權限驗證的配置命令刪除.最後重啟mysql服務即可用root用戶密碼登錄!

6) 刪除添加的跳過權限驗證配置命令,重啟mysql服務

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

    #刪除或註釋剛才在[mysqld]下追加 skip-grant-tables
    [mysqld]
        ...
    #skip-grant-tables

重啟mysql服務

sudo service mysql restart

出於安全考慮我們不會讓MySQL用戶無密碼即可登錄,要在重置完密碼後為root賬戶設置密碼

設置密碼要把配置文件中的跳過權限驗證命令去掉以後重啟mysql服務登錄設置才行,不然會提示沒有驗證,無權限操作

方法1:

以 root 身份登錄 mysql後,再使用 set password 命令修改密碼:
set password for root@localhost = password("new_password");

方法2:

mysqladmin -u root -p password "new_password"
#執行該命名後會提示輸入原密碼,輸入正確後即可修改。

方法3:

update mysql.user set authentication_string=password("pswd") where user="root";
#在重置 root 密碼的同時,也可以設置默認密碼。不過密碼不能為明文,必須使用 password() 函數加密

使用該方法之後需刷新權限列表:
flush privileges;

MySQL重置密碼