MySQL root用戶密碼忘記的兩種情況及解決方案
引言
在使用MySQL數據庫的的過程中,不可避免的會出現忘記密碼的現象。普通用戶的密碼如果忘記,可以用更高權限的用戶(例如root)進行重置。但是如果root用戶的密碼忘記了,由于root用戶本身就是最高權限,那這個方法就行不通了。本文介紹2種在忘記root用戶用戶密碼的情況下,如何進行重設。
一、使用–init-file參數重設
由于忘記了root密碼,我們是無法通過root用戶連接到數據庫的,因此也無法通過客戶端執(zhí)行alter user或set password命令來重置密碼。MySQL提供了init-file參數,在啟動時可以讀取文件,我們將修改root用戶密碼的SQL放在文件中,通過重啟來執(zhí)行修改密碼命令。
假設我想要將root密碼修改為’abc123’,先測試一下,密碼是不對的:
mysql -uroot -pabc123

1.1 停止mysql進程
下面演示的是通過kill命令殺死m(xù)ysqld進程,如果可以正常停止也可以。
首先通過ps -ef | grep mysqld 查詢mysql數據庫的進程號:
ps -ef | grep mysqld

這里顯示數據庫相關的進程有2個(第3個是grep命令),由于我是通過mysqld_safe腳本啟動的數據庫,因此有一個額外的守護進程:
進程號為23619的mysqld_safe守護進程,負責監(jiān)控mysqld的狀態(tài)
進程號為24846的mysqld進程,這個是數據庫服務進程(它的父進程號23619)
查詢到進程號后,使用kill命令依次將mysqld_safe和mysqld殺死,注意要先殺mysqld_safe,如果先殺mysqld,那么守護進程檢測到mysqld進程掛了,會立刻將mysqld重新啟動:
kill -9 23619 kill -9 24846

如果只有一個mysqld進程,那么只要將其殺掉即可。
1.2 創(chuàng)建初始化文件
創(chuàng)建一個文本文件,名稱隨意(這里是reset_password.sql),里面寫上更改root密碼的SQL:
alter user 'root'@'localhost' identified by 'abc123';

文件創(chuàng)建后給mysql用戶增加讀取權限(通常使用操作系統(tǒng)的mysql用戶來啟動數據庫進程)
chmod a+r reset_password.sql

1.3 使用init-file參數重啟數據庫
使用–init-file=/root/reset_password.sql 參數啟動數據庫,啟動時會自動執(zhí)行文件種的密碼修改SQL:
mysqld_safe --init-file=/root/reset_password.sql & mysql -uroot -pabc123

可以看到啟動后,root用戶的密碼已經成功被修改為’abc123’,最后將reset_password.sql文件刪除即可。
二、使用–skip-grant-tables參數重設
MySQL的skip-grant-tables參數可以指定在啟動時忽略權限認證,這意味著任何用戶都可以不用密碼登陸數據庫,并且具有所有權限,這是一個危險的狀態(tài)。因此當使用skip-grant-tables啟動時,MySQL會自動啟用skip-networking參數,禁止所有遠程連接。
2.1 停止mysqld進程
停止或殺掉mysqld進程,參照上一節(jié)內容。
2.2 使用skip-grant-tables重啟數據庫
使用skip-grant-tables參數啟動數據庫,并使用root用戶登陸:
mysqld_safe --skip-grant-tables & mysql -uroot -p

這里提示了Enter password:,但實際是不需要輸入密碼的,直接回車便可登陸。
2.3 修改root密碼
加載權限表并修改root密碼,這里將密碼修改為abc456:
flush privileges; alter user 'root'@'localhost' identified by 'abc456';

2.4 重啟數據庫
使用正常狀態(tài)重啟數據庫
mysqladmin shutdown mysqld_safe & mysql -uroot -pabc456

可以看到root用戶的密碼成功被修改為abc456
到此這篇關于MySQL root用戶密碼忘記的兩種情況及解決方案的文章就介紹到這了,更多相關MySQL root用戶密碼忘記內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mysql 5.7安裝 MySQL 服務無法啟動但是服務沒有報告任何錯誤
這篇文章主要介紹了mysql 5.7安裝 MySQL 服務無法啟動但是服務沒有報告任何錯誤的相關資料,需要的朋友可以參考下2017-04-04

