mysql忘記root密碼的解決辦法(針對(duì)不同mysql版本)
1.前提說明
1.1 cmd 窗口打開方式
cmd 命令窗口請(qǐng)以“管理員”身份打開運(yùn)行,否則可能提示權(quán)限不足。(net 命令需要管理員權(quán)限)
1.2 mysql 服務(wù)相關(guān)命令知識(shí)補(bǔ)充
# 安裝 mysql 服務(wù) mysqld -install # 安裝 mysql 服務(wù)并指定服務(wù)名稱,格式:mysqld -install [ServiceName] # 如果不指定服務(wù)名,默認(rèn)的服務(wù)名稱為 mysql mysqld -install mysql80 # 移除 mysql 服務(wù),格式:mysqld --remove [ServiceName] mysqld --remove mysql80 # 啟動(dòng) mysql80 服務(wù),格式:net start [ServiceName] net start mysql80 # 查看正在運(yùn)行的所有服務(wù) net start # 查看特定服務(wù),通過字符串過濾完成,格式:net start | findstr [ServiceName] net start | findstr mysql80 # 停止 mysql80 服務(wù),格式:net stop [ServiceName] net stop mysql80
1.3 三個(gè) mysql 版本說明
文章共給出三個(gè) MySQL 階段版本的忘記密碼解決辦法,分別是:
- MySQL 5.7.6 以前
- MySQL 5.7.6 及以后(MySQL 8.0 以前)
- MySQL 8.0+
MySQL 有一個(gè) 5.7.6 分界線,是由于從 MySQL 5.7.6 版本開始,mysql.user 表中的 password 列已被廢棄,并且從 MySQL 8.0 版本中完全移除。在 MySQL 5.7.6 及以后的版本中,密碼存儲(chǔ)在 authentication_string 列中,該列使用的是新的身份驗(yàn)證插件和密碼哈希算法。
The column in the mysql.user table now stores credential information for all accounts. The Password column, previously used to store password hash values for accounts authenticated with the mysql_native_password and mysql_old_password plugins, is removed.
1.4 運(yùn)行時(shí)可能發(fā)生的報(bào)錯(cuò)問題
如果嚴(yán)格按照我的步驟來,應(yīng)當(dāng)是不會(huì)報(bào)錯(cuò)的,但如果漏掉了某些步驟,可能會(huì)發(fā)生命令報(bào)錯(cuò)。
跳過密碼授權(quán)命令報(bào)錯(cuò)
執(zhí)行 mysqld --console --skip-grant-tables --shared-memory 時(shí)窗口未卡主,且有 [ERROR]

這是由于沒有執(zhí)行我給的步驟 1“停止 MySQL 服務(wù)”,因此,在執(zhí)行 net stop [mysql服務(wù)名] 后,窗口就會(huì)卡主且不會(huì)有報(bào)錯(cuò)了。

修改密碼時(shí)報(bào)錯(cuò)

報(bào)錯(cuò):ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
這是由于沒有關(guān)閉“跳過密碼授權(quán)”窗口導(dǎo)致的,因此只需要關(guān)閉授權(quán)窗口即可。
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’
這是由于關(guān)閉了 mysql 服務(wù)導(dǎo)致的,因此只需要通過 net start [ServiceName] 打開 Mysql 服務(wù)即可。
例如:
net start mysql57
2.MySQL 5.7.6-(不包括 5.7.6)
這里以 MySQL 5.7.5 作為示例。
打開 cmd,停止 MySQL 服務(wù),格式:net stop [服務(wù)名稱]。我這里的服務(wù)名稱是 MySQL575,你的可能是 mysql,因?yàn)?mysql 是默認(rèn)的服務(wù)名稱。
net stop mysql575
服務(wù)名稱查找方式:win + r 打開“運(yùn)行”,輸入 services.msc,查找你的 MySQL 服務(wù)名稱。

跳過密碼授權(quán)。
mysqld --console --skip-grant-tables --shared-memory
注意這個(gè) mysqld 需要在環(huán)境變量下配置到 mysql 的 bin 目錄,或者直接在 bin 目錄下執(zhí)行該指令。

打開一個(gè)新的 cmd 窗口,輸入 mysql 可直接進(jìn)行 mysql 管理。注意“跳過密碼授權(quán)”這個(gè) cmd 窗口不要關(guān)閉。

清空密碼
UPDATE mysql.user SET password=”” WHERE user=“root”; exit;
接著,一定要關(guān)閉“跳出密碼授權(quán)”窗口,在新窗口啟動(dòng) mysql 服務(wù)并進(jìn)入 mysql 管理。
# 1.啟動(dòng) mysql 服務(wù)。格式:net start [服務(wù)名稱] net start mysql575 # 2.進(jìn)入 mysql,無密碼 mysql -uroot
修改密碼并刷新權(quán)限。
-- 1.修改密碼
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
-- 2.刷新權(quán)限
flush privileges;
-- 3.退出
exit;
再次登錄。
mysql -uroot -p123456

3.MySQL 5.7.6+(包括 5.7.6)
這里以 MySQL 5.7.35 作為示例。
打開 cmd,停止 MySQL 服務(wù),格式:net stop [服務(wù)名稱]。我這里的服務(wù)名稱是 MySQL57,你的可能是 mysql,因?yàn)?mysql 是默認(rèn)的服務(wù)名稱。
net stop mysql57
服務(wù)名稱查找方式:win + r 打開“運(yùn)行”,輸入 services.msc,查找你的 MySQL 服務(wù)名稱。

跳過密碼授權(quán)。
mysqld --console --skip-grant-tables --shared-memory
注意這個(gè) mysqld 需要在環(huán)境變量下配置到 mysql 的 bin 目錄,或者直接在 bin 目錄下執(zhí)行該指令。

打開一個(gè)新的 cmd 窗口,輸入 mysql 可直接進(jìn)行 mysql 管理。注意“跳過密碼授權(quán)”這個(gè) cmd 窗口不要關(guān)閉。

清空密碼
UPDATE mysql.user SET authentication_string=”” WHERE user=“root”; exit;
接著,一定要關(guān)閉“跳出密碼授權(quán)”窗口,在新窗口啟動(dòng) mysql 服務(wù)并進(jìn)入 mysql 管理。
# 1.啟動(dòng) mysql 服務(wù)。格式:net start [服務(wù)名稱] net start mysql57 # 2.進(jìn)入 mysql,無密碼 mysql -uroot
修改密碼并刷新權(quán)限。
-- 1.修改密碼 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456"; -- 2.刷新權(quán)限 flush privileges; -- 3.退出 exit;
再次登錄。
mysql -uroot -p123456

4.MySQL 8.0
打開 cmd,停止 MySQL 服務(wù),格式:net stop [服務(wù)名稱]。我這里的服務(wù)名稱是 MySQL80,你的可能是 mysql,因?yàn)?mysql 是默認(rèn)的服務(wù)名稱。
net stop mysql80
服務(wù)名稱查找方式:win + r 打開“運(yùn)行”,輸入 services.msc,查找你的 MySQL 服務(wù)名稱。

跳過密碼授權(quán)。
mysqld --console --skip-grant-tables --shared-memory
注意這個(gè) mysqld 需要在環(huán)境變量下配置到 mysql 的 bin 目錄,或者直接在 bin 目錄下執(zhí)行該指令。

打開一個(gè)新的 cmd 窗口,輸入 mysql 可直接進(jìn)行 mysql 管理。注意“跳過密碼授權(quán)”這個(gè) cmd 窗口不要關(guān)閉。

清空密碼
UPDATE mysql.user SET authentication_string=”” WHERE user=“root”; exit;
接著,一定要關(guān)閉“跳出密碼授權(quán)”窗口,在新窗口啟動(dòng) mysql 服務(wù)并進(jìn)入 mysql 管理。
# 1.啟動(dòng) mysql 服務(wù)。格式:net start [服務(wù)名稱] net start mysql80 # 2.進(jìn)入 mysql,無密碼 mysql -uroot
修改密碼并刷新權(quán)限。
-- 1.修改密碼 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456"; -- 2.刷新權(quán)限 flush privileges; -- 3.退出 exit;
再次登錄。
mysql -uroot -p123456

以上就是mysql忘記root密碼的解決辦法(針對(duì)不同mysql版本)的詳細(xì)內(nèi)容,更多關(guān)于mysql忘記root密碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mysql中索引使用不當(dāng)速度比沒加索引還慢的測(cè)試
mysql的索引使用不當(dāng)速度比沒加索引還慢,我們舉個(gè)例子來解釋一下。2011-08-08
安裝MySQL phpMyAdmin cpolar實(shí)現(xiàn)遠(yuǎn)程訪問連接的操作步驟
這篇文章主要給大家介紹了安裝 MySQL phpMyAdmin cpolar實(shí)現(xiàn)遠(yuǎn)程訪問連接的流程步驟,文中有詳細(xì)的圖文介紹,具有一定的參考價(jià)值,需要的朋友可以參考下2023-08-08
mysql 8.0 找不到my.ini配置文件以及報(bào)sql_mode=only_full_group
MySQL5.7.5及以上版本啟用ONLY_FULL_GROUP_BYSQL模式可能導(dǎo)致的問題,本文就來介紹一下找不到my.ini配置文件的解決方法,感興趣的可以了解一下2024-08-08
MySQL權(quán)限USAGE和ALL PRIVILEGES的用法
本文主要介紹了MySQL權(quán)限USAGE和ALL PRIVILEGES的用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09

