啟動參數 --skip-grant-tables 使 MySQL **跳過權限表驗證**,允許無密碼、無權限檢查直接登錄,從而修改 mysql.user 表重置密碼。
vim /etc/my.cnf
# 在 [mysqld] 區塊添加
skip-grant-tables
# 保存退出
systemctl restart mysqld
# 或 service mysql restart
mysql -u root
# 進入 mysql> 提示符
USE mysql;
-- MySQL 5.7.6+ / MariaDB 10.2+ (authentication_string 列)
UPDATE user SET authentication_string = PASSWORD('NewStrongPass#2024')
WHERE User = 'root' AND Host = 'localhost';
-- MySQL 5.7.6 前 / 老版本 (password 列)
-- UPDATE user SET password = PASSWORD('NewStrongPass#2024') WHERE User = 'root';
FLUSH PRIVILEGES;
MySQL 8.0 注意:默認使用caching_sha2_password插件,PASSWORD()函數已移除。8.0 重置密碼應用:ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass#2024';
# 1. 註釋或刪除 skip-grant-tables
vim /etc/my.cnf
# skip-grant-tables <-- 加 # 註釋
# 2. 重啟服務恢復正常權限驗證
systemctl restart mysqld
mysql -u root -p'NewStrongPass#2024' -e "SELECT VERSION();"
⚠ 極度危險狀態:啟用 skip-grant-tables 期間,**任何本地用戶均可無密碼以 root 身份登錄、任意增刪改查、甚至 DROP DATABASE**。
bind-address=127.0.0.1 僅允許本地連接iptables -I INPUT -p tcp --dport 3306 -j DROP 禁止外部訪問/usr/local/mysql/bin/mysql_secure_installation
交互式完成:修改 root 密碼、移除匿名用戶、禁止 root 遠程、刪除 test 庫、刷新權限。
my.ini(通常在安裝目錄或 C:\ProgramData\MySQL\MySQL Server 5.x\)net stop mysql && net start mysqlmysqld --console --skip-grant-tables 前台運行調試模式Linux 下 MySQL/MariaDB 忘記 root 密碼,**skip-grant-tables 臨時跳過授權表** 是標準重置路徑。核心風險在於**無授權狀態下的極高權限暴露**,務必做到:配置隔離、網絡隔離、最小時間窗、操作即恢復、驗證新密碼。平時應建立密碼管理規範(密碼管理器、定期輪換、應急預案演練),避免頻繁使用此方案。