首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Linux 下 MySQL Root 密碼修改與遺忘密碼急救全流程

     編輯:MySQL 資料庫相關知識

場景一:已知舊密碼,常規修改

# 方法 1:mysqladmin (推腳本自動化)
/usr/local/mysql/bin/mysqladmin -u root -p'old_pass' password 'NewStrongPass2024!'

# 方法 2:SQL 登入後修改 (支援多 host)
mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass2024!';
mysql> ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'NewStrongPass2024!';
mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'NewStrongPass2024!';  -- 謹慎開放遠程
mysql> FLUSH PRIVILEGES;

場景二:遺忘 Root 密碼 — 跳過授權表啟動急救

  1. 停止服務:systemctl stop mysqld 或 killall mysqld
  2. 跳過授權啟動:
    # 臨時配置文件法 (推薦,不污染主配置)
    cat > /tmp/mysqld_safe.cnf <<'EOF'
    [mysqld]
    skip-grant-tables
    skip-networking  -- 僅本地 Socket,防外部趁虛而入
    EOF
    
    /usr/local/mysql/bin/mysqld_safe --defaults-file=/tmp/mysqld_safe.cnf &
    
  3. 無密碼登入修改:
    
    mysql -u root
    mysql> FLUSH PRIVILEGES;  -- 5.7+ 必須先執行
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass2024!';
    mysql> FLUSH PRIVILEGES;
    
  4. 恢復正常啟動:
    
    killall mysqld
    systemctl start mysqld
    mysql -u root -p'NewStrongPass2024!'
    

關鍵細節避坑

版本修改語法注意事項
5.6 / 5.7 早期SET PASSWORD FOR 'root'@'localhost' = PASSWORD('...')PASSWORD() 5.7.6 移除
5.7.6+ / 8.0ALTER USER 'root'@'localhost' IDENTIFIED BY '...'需 FLUSH PRIVILEGES 生效
8.0+ (caching_sha2_password)同上舊客戶端需 --default-auth=mysql_native_password

安全加固清單 (修改密碼後必做)


mysql> DELETE FROM mysql.user WHERE User='';           -- 刪除匿名用戶
mysql> DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');
mysql> DROP DATABASE IF EXISTS test;
mysql> DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
mysql> FLUSH PRIVILEGES;

總結

「知舊改舊、忘舊跳過授權、改畢強權限」三步走。生產環境建議配合 mysql_secure_installation 腳本一鍵完成上述加固,並定期輪換密碼、審計遠程賬號。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved