mysql -uroot -p
mysql> SET PASSWORD = 'NewStrongPass#2024';
mysql> FLUSH PRIVILEGES;
mysql -uroot -p
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD('NewStrongPass#2024') WHERE User='root';
mysql> FLUSH PRIVILEGES;
注意:MySQL 5.7+ 密碼列為 authentication_string,5.6 為 password。
mysqladmin -uroot -p'oldpass' password 'NewStrongPass#2024'
# 警告:命令行明文密碼有安全風險,生產環境慎用
systemctl stop mysqld
# 或 service mysqld stop
mysqld_safe --skip-grant-tables --skip-networking --user=mysql &
# --skip-grant-tables: 禁用權限檢查
# --skip-networking: 僅本地連接,安全隔離
# &: 後台運行
mysql -uroot mysql
mysql> UPDATE user SET authentication_string=PASSWORD('NewStrongPass#2024') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
pkill mysqld_safe
systemctl start mysqld
mysql -uroot -p'NewStrongPass#2024' -e "SELECT VERSION();"
MySQL 8.0 默認使用 caching_sha2_password 插件,修改密碼語法:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass#2024';
# 或兼容模式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewStrongPass#2024';
-- 創建遠程 root(不推薦,建議創建專用運維賬號)
CREATE USER 'root'@'%' IDENTIFIED BY 'NewStrongPass#2024';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 生產環境推薦:專用運維賬號 + 限制 IP 段
CREATE USER 'dba'@'10.0.0.%' IDENTIFIED BY 'DbaPass#2024';
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'10.0.0.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
root@%,僅允許 root@localhostDELETE FROM mysql.user WHERE User='';DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test%';validate_password 強制複雜度audit_log 記錄所有連接/查詢| 場景 | 核心命令 | 適用版本 |
|---|---|---|
| 知密碼 | SET PASSWORD / UPDATE user / mysqladmin | 全版本 |
| 忘密碼 | mysqld_safe --skip-grant-tables → UPDATE user | 全版本 |
| MySQL 8.0 | ALTER USER ... IDENTIFIED BY | 8.0+ |
掌握三大場景修改密碼流程,配合安全加固清單,即可應對所有 MySQL Root 密碼管理需求。