root 權限最高,密碼遺忘會導致無法管理資料庫。本文提供 Windows 與 Linux 兩大平台的完整重置流程。
net stop mysql
進入 MySQL 安裝目錄 bin 資料夾,執行:
mysqld --skip-grant-tables
注意:MySQL 5.7+ 使用 mysqld 而非 mysqld-nt。
另開一個 CMD 視窗:
mysql -u root
-- 進入 MySQL 後執行:
USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
MySQL 5.7+ 注意:密碼欄位為 authentication_string,舊版為 password。
net start mysql
# 1. 停止服務
systemctl stop mysqld
# 2. 建立臨時配置
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
# 3. 跳過權限啟動
mysqld_safe --skip-grant-tables --skip-networking &
# 4. 無密碼登入修改
mysql -u root
USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
# 5. 正常重啟
pkill mysqld
systemctl start mysqld
# 1. 建立 SQL 腳本
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';" > /tmp/reset.sql
# 2. 停止服務並用 init-file 啟動
systemctl stop mysqld
mysqld --init-file=/tmp/reset.sql --user=mysql &
# 3. 正常重啟
pkill mysqld
systemctl start mysqld
mysql -u root -p'新密碼' -e "SELECT VERSION();"
成功連線即表示重置完成。