重置MySQL 8.0 Root密碼的簡便方法小結(jié)
在Windows環(huán)境下安裝MySQL數(shù)據(jù)后,如果忘記了 MySQL 8.0 的 root 密碼,不必擔(dān)心!通過 --skip-grant-tables 和 named-pipe 模式登錄后,只需幾步簡單的 SQL 命令即可重置密碼:刷新權(quán)限表、修改密碼、再刷新權(quán)限,最后重啟 MySQL 服務(wù),你就能使用新密碼順利登錄數(shù)據(jù)庫!
問題如下:
出現(xiàn) ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
表示 MySQL 拒絕了你提供的 root
用戶的密碼??赡艿脑虬ǎ?/p>
- 密碼不正確:你提供的密碼和
root
用戶的實際密碼不匹配。 - MySQL 安裝時的問題:可能在安裝 MySQL 時設(shè)置的
root
用戶密碼不正確,或者被誤改。 - 權(quán)限問題:
root
用戶的權(quán)限或賬戶狀態(tài)可能有問題
解決方案
1. 檢查是否輸入正確的密碼
確認你輸入的密碼是否正確,注意以下幾點:
確認你輸入的密碼是否正確,注意以下幾點:
- 密碼區(qū)分大小寫。
- 確保沒有意外的空格或字符被包含在密碼中。
- 確保你嘗試的是
root
用戶的密碼,而不是其他用戶。
2. 使用“跳過權(quán)限表”的方式重置 root 密碼
如果你確認密碼正確但仍然無法登錄,或者你忘記了 root
密碼,可以通過“跳過權(quán)限表”的方式重置密碼。以下是步驟:
2.1 停止 MySQL 服務(wù)
在 Windows 下,你可以通過命令提示符停止 MySQL 服務(wù):
net stop mysql
如果你使用的是不同的 MySQL 服務(wù)名稱(如 mysql80
),請將命令改為:
net stop mysql80
問題一:如果執(zhí)行net stop mysql后,出現(xiàn)“C:\Users\admin>net stop mysql80 發(fā)生系統(tǒng)錯誤 5。 拒絕訪問。”
出現(xiàn) 系統(tǒng)錯誤 5
,并顯示“拒絕訪問”,通常意味著你沒有足夠的權(quán)限來停止 MySQL 服務(wù)。這是一個權(quán)限問題,通常是因為你未以管理員身份運行命令提示符。
解決方法:
方法一:以管理員身份運行命令提示符
Windows 中的一些操作(如啟動和停止服務(wù))需要以管理員權(quán)限執(zhí)行。請按以下步驟操作:
打開命令提示符:
- 點擊 開始 菜單,在搜索框中輸入
cmd
。 - 在搜索結(jié)果中,右鍵點擊 命令提示符,然后選擇 以管理員身份運行。
- 在以管理員權(quán)限運行的命令提示符中,輸入以下命令:
- 點擊 開始 菜單,在搜索框中輸入
net stop mysql80
或者,如果你的 MySQL 服務(wù)名稱是 mysql
而不是 mysql80
,則輸入:
net stop mysql
- 檢查 MySQL 服務(wù)名稱
在某些情況下,MySQL 的服務(wù)名稱可能不是 mysql80
。你可以通過以下步驟檢查你系統(tǒng)中的 MySQL 服務(wù)名稱:
打開 命令提示符(以管理員身份運行)。
輸入以下命令查看所有服務(wù):
sc query
在返回的列表中找到類似 mysql
或 mysql80
的條目,記下服務(wù)名稱。
或者,你可以專門查找 MySQL 服務(wù):
sc query | findstr /i "mysql"
找到正確的服務(wù)名稱后,再使用正確的服務(wù)名稱來停止 MySQL 服務(wù)。
方法二:使用 Windows 服務(wù)管理器停止 MySQL 服務(wù)
如果不方便通過命令行操作,也可以使用 Windows 服務(wù)管理器來停止 MySQL 服務(wù):
- 按 Win + R 打開 運行 窗口,輸入
services.msc
,然后按回車。 - 在服務(wù)管理器中找到
MySQL80
或類似MySQL
的服務(wù)。 - 右鍵點擊該服務(wù),然后選擇 停止
2.2 以跳過權(quán)限表模式啟動 MySQL
使用 --skip-grant-tables 選項啟動 MySQL。這個選項允許你在沒有密碼的情況下登錄 MySQL。
- 打開命令提示符,進入 MySQL 的安裝目錄,通常是 C:\Program Files\MySQL\MySQL Server <版本號>\bin。
- 使用以下命令啟動 MySQL 服務(wù)器(跳過權(quán)限表):
mysqld --skip-grant-tables
問題二:執(zhí)行mysqld --skip-grant-tables
命令,再執(zhí)行mysql -u root報錯
執(zhí)行 mysqld --skip-grant-tables 命令,再執(zhí)行mysql -u root,出現(xiàn)ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061),表明 MySQL 服務(wù)并未成功啟動。
排查原因和解決方法:
1. 確認 MySQL 是否成功啟動
執(zhí)行 mysqld --skip-grant-tables
命令后,通常會顯示一些輸出。如果命令行未響應(yīng)且沒有提示 MySQL 已啟動,可能說明啟動失敗。
在執(zhí)行該命令時,請查看是否有錯誤輸出。如果啟動失敗,可能會遇到類似以下問題:
- 配置文件錯誤:檢查
my.ini
文件中的端口設(shè)置或其他參數(shù)。 - 數(shù)據(jù)目錄錯誤:確保 MySQL 的數(shù)據(jù)目錄可訪問且完整。
如果沒有看到任何輸出,可以查看 MySQL 錯誤日志。
2. 查看 MySQL 錯誤日志
MySQL 錯誤日志中會包含詳細的啟動錯誤信息。日志通常位于 MySQL 數(shù)據(jù)目錄下,文件名類似于 mysql.err
或 error.log
。你可以打開該文件,查找任何與啟動失敗相關(guān)的錯誤。
日志文件通常位于:
# 路徑為安裝路徑MySQL Server xx\Data\mysql.err下 C:\ProgramData\MySQL\MySQL Server 8.0\Data\mysql.err
可能不是mysql.err,需要看一下mysql.ini中配置,我的配置中文件名稱為log-error="DESKTOP-ONBJR20.err"
可以通過下面命令查看文件內(nèi)容:
type DESKTOP-ONBJR20.err # 或者 more DESKTOP-ONBJR20.err
- 錯誤日志信息如下:
2024-09-24T03:22:02.873676Z 0 [ERROR] [MY-010131] [Server] TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS 2024-09-24T03:22:02.873977Z 0 [ERROR] [MY-010119] [Server] Aborting 2024-09-24T03:22:04.080405Z 0 [ERROR] [MY-013183] [InnoDB] Assertion failure: trx0sys.cc:643:UT_LIST_GET_LEN(trx_sys->mysql_trx_list) == 0 thread 32636
從錯誤日志來看,MySQL 在啟動過程中遇到了幾個問題,導(dǎo)致無法成功啟動。這是關(guān)鍵的錯誤信息:
[ERROR] [MY-010131]:
TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS
- 這個錯誤表明在 Windows 環(huán)境中,MySQL 需要正確配置網(wǎng)絡(luò)選項。它提到了需要使用
TCP/IP
、shared-memory
或named-pipe
來進行通信。
- 這個錯誤表明在 Windows 環(huán)境中,MySQL 需要正確配置網(wǎng)絡(luò)選項。它提到了需要使用
[ERROR] [MY-010119]:
Aborting
- 這表明 MySQL 在遇到上述錯誤后停止了啟動。
[ERROR] [MY-013183] [InnoDB] Assertion failure: 這通常是由于 InnoDB 存儲引擎中的一個內(nèi)部一致性檢查失敗導(dǎo)致的。這個錯誤可能是由于損壞的事務(wù)或者數(shù)據(jù)導(dǎo)致的。
解決方案
1、修復(fù) TCP/IP
或 Named Pipe
配置
你可以確保 MySQL 正確使用 TCP/IP
,這是大多數(shù)情況下的首選方式。檢查 my.ini
中的網(wǎng)絡(luò)設(shè)置。打開 my.ini
文件,確保以下設(shè)置存在且正確:
[mysqld] bind-address=127.0.0.1 enable-named-pipe
2、修復(fù) InnoDB 相關(guān)錯誤
InnoDB
錯誤通常表明數(shù)據(jù)庫文件或事務(wù)日志可能損壞。打開 my.ini
文件,添加以下配置來禁用 InnoDB 的恢復(fù)檢查:
[mysqld] innodb_force_recovery=0
innodb_force_recovery 可以有 1 到 6 的值,分別對應(yīng)不同的恢復(fù)力度。如果 1 無效,你可以逐漸增加到 2 或 3 嘗試恢復(fù),但避免使用更高的值(如 4-6),這些可能導(dǎo)致數(shù)據(jù)丟失。
- 啟動后,不要關(guān)閉此窗口。
2.3 重新打開另一個命令提示符窗口,登錄 MySQL
在另一個命令提示符窗口中,使用以下命令登錄 MySQL(不需要密碼):
mysql --protocol=PIPE -u root
現(xiàn)在你應(yīng)該可以登錄 MySQL。
2.4 重置 root 密碼
登錄成功后,使用以下 SQL 命令重置 root
用戶的密碼:
USE mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES;
將 new_password
替換為你想要設(shè)置的新密碼。
2.5 關(guān)閉 MySQL 跳過權(quán)限表的模式并重啟服務(wù)
停止跳過權(quán)限表的 MySQL 服務(wù):
- 首先關(guān)閉命令提示符窗口中的 MySQL 服務(wù)進程(按下 Ctrl + C 或直接關(guān)閉該窗口)。
重新啟動 MySQL 服務(wù):
net start mysql
2.6 使用新密碼登錄
現(xiàn)在你可以使用新的密碼登錄:
mysql -u root -p
輸入你剛才設(shè)置的密碼,應(yīng)該可以成功登錄。
總結(jié)
- 如果你忘記了
root
密碼,建議使用跳過權(quán)限表的方式重置密碼。 - 確保 MySQL 服務(wù)已經(jīng)正確啟動,且你在使用正確的用戶名和密碼進行登錄。
以上就是重置MySQL 8.0 Root密碼的簡便方法小結(jié)的詳細內(nèi)容,更多關(guān)于重置MySQL 8.0 Root密碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MYSQL數(shù)字函數(shù)詳解及實戰(zhàn)記錄(數(shù)字函數(shù)大全,內(nèi)含示例)
數(shù)學(xué)運算函數(shù)可以實現(xiàn)常見的數(shù)學(xué)運算,這篇文章主要給大家介紹了關(guān)于MYSQL數(shù)字函數(shù)詳解及實戰(zhàn)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01