mysqladmin -uroot -p'oldpass' password 'NewStrongPass#2024'
# 注意:-p 後直接跟密碼無空格,命令行明文有風險
mysql -uroot -p
mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD('NewStrongPass#2024') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
版本差異:MySQL 5.7+ 密碼列為 authentication_string,5.6 為 password。
pkill mysql** 強殺進程,會導致 mysqld dead but subsys locked 狀態,需先 systemctl start 再 stop 才能清理鎖文件systemctl stop mysqld 或 /etc/init.d/mysqld stopmysqld_safe --skip-grant-tables --skip-networking --user=mysql &
# --skip-grant-tables: 禁用權限檢查
# --skip-networking: 僅本地 Unix Socket 連接,防外部訪問
# --user=mysql: 指定運行用戶
# &: 後台運行
mysql -uroot mysql
mysql> UPDATE user SET password=PASSWORD('NewStrongPass#2024') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
pkill mysqld_safe
systemctl start mysqld
mysql -uroot -p'NewStrongPass#2024' -e "SELECT 1;"CREATE USER 'dba'@'10.0.0.%' IDENTIFIED BY 'DbaPass#2024';
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'10.0.0.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
CREATE USER 'root'@'%' IDENTIFIED BY 'RootRemotePass#2024';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
[mysqld]
bind-address = 0.0.0.0 # 監聽所有接口,默認 127.0.0.1
# skip-networking = 0 # 確保未禁用網絡
修改後重啟服務生效。
DELETE FROM mysql.user WHERE User='';DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test%';DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';INSTALL PLUGIN validate_password SONAME 'validate_password.so';INSTALL PLUGIN audit_log SONAME 'audit_log.so';| 場景 | 核心操作 | 風險等級 | 適用環境 |
|---|---|---|---|
| 知密碼改密 | mysqladmin / UPDATE user | 低 | 所有 |
| 忘密碼重置 | mysqld_safe --skip-grant-tables | 中(需系統權限) | 所有 |
| 遠程授權 | CREATE USER @'%' + GRANT | 高(生產禁用 root@%) | 開發/測試 |
掌握三大場景操作流程,配合安全加固清單,即可安全完成 MySQL 密碼管理與訪問控制配置。