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遷移到服務(wù)器數(shù)據(jù)庫(kù)
這篇文章主要介紹了如何把本地mysql遷移到服務(wù)器數(shù)據(jù)庫(kù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11MySQL操作數(shù)據(jù)庫(kù)和表的常用命令新手教程
這篇文章主要介紹了MySQL操作數(shù)據(jù)庫(kù)和表的常用命令新手教程,本文總結(jié)的命令都是控制mysql必須掌握的、常用的命令,需要的朋友可以參考下2014-09-09探究MySQL中索引和提交頻率對(duì)InnoDB表寫入速度的影響
這篇文章主要介紹了MySQL中索引和提交頻率對(duì)InnoDB表寫入速度的影響,作者通過實(shí)際測(cè)試運(yùn)行時(shí)間的對(duì)比來驗(yàn)證,需要的朋友可以參考下2015-05-05解決xmapp啟動(dòng)mysql出現(xiàn)Error: MySQL shutdown unexpec
這篇文章主要介紹了解決xmapp啟動(dòng)mysql出現(xiàn)Error: MySQL shutdown unexpectedly.問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06MySQL 5.5/5.6/5.7及以上版本安裝包安裝時(shí)如何選擇安裝路徑
最近mysql官方網(wǎng)站的安裝包從5.5-5.7起都是新版的安裝界面,各種環(huán)境要求支持,看樣子以后老點(diǎn)的系統(tǒng)安裝都?jí)蛸M(fèi)勁的了,這里腳本之家小編特為大家整理一下安裝步驟與方法2016-04-04MySQL遷移KingbaseESV8R2的實(shí)現(xiàn)步驟
本文主要介紹了MySQL遷移KingbaseESV8R2的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02保證MySQL與Redis數(shù)據(jù)一致性的6種實(shí)現(xiàn)方案
這篇文章將聚焦在一個(gè)非常重要且復(fù)雜的問題上:MySQL與Redis數(shù)據(jù)的一致性,當(dāng)我們?cè)趹?yīng)用中同時(shí)使用MySQL和Redis時(shí),如何保證兩者的數(shù)據(jù)一致性呢?下面就來分享幾種實(shí)用的解決方案,需要的朋友可以參考下2024-03-03