MySQL重置密碼
阿新 • • 發佈:2018-01-25
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重置密碼