# Linux
kill `cat /var/lib/mysql/hostname.pid` # 非 kill -9,優雅關閉
# 或
systemctl stop mysqld
# Windows
net stop mysql
# 前台運行(調試用)
mysqld --skip-grant-tables --user=mysql &
# 或修改配置文件永久生效
# my.cnf / my.ini [mysqld] 區段加入
skip-grant-tables
# 然後 systemctl start mysqld
mysql -u root -p
# 密碼直接 Enter
mysql> USE mysql;
# MySQL 5.7.6+ / 8.0
mysql> UPDATE user SET authentication_string = PASSWORD('新密碼') WHERE User = 'root';
# MySQL 5.7.6 之前
mysql> UPDATE user SET Password = PASSWORD('新密碼') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
mysql> QUIT;
# 移除 skip-grant-tables
# 重啟服務
systemctl restart mysqld
# 新密碼登入驗證
mysql -u root -p'新密碼' -e "SELECT VERSION();"
登入後若報 ERROR 1820: You must reset your password using ALTER USER:
ALTER USER 'root'@'localhost' IDENTIFIED BY '最終密碼';
若再報 ERROR 1819: password policy:
SET GLOBAL validate_password_policy = LOW;
SET GLOBAL validate_password_length = 6;
-- 然後重新 ALTER USER
net stop mysqlmysqld --skip-grant-tables --console(保持視窗開啟)mysql -u root 免密進入net start mysqlskip-grant-tablesUPDATE user SET Host='localhost' WHERE User='root';