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

MySQL 修改密碼與遠程授權實戰:知密碼、忘密碼、安全模式三大場景

     編輯:MySQL 資料庫相關知識

場景一:已知 Root 密碼

方法 1:mysqladmin 命令行(腳本自動化首選)

mysqladmin -uroot -p'oldpass' password 'NewStrongPass#2024'
# 注意:-p 後直接跟密碼無空格,命令行明文有風險

方法 2:SQL 更新 user 表(通用、可審計)

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。

場景二:忘記 Root 密碼(安全模式重置)

關鍵原則

  • **必須有系統 root/sudo 權限**
  • **嚴禁使用 pkill mysql** 強殺進程,會導致 mysqld dead but subsys locked 狀態,需先 systemctl start 再 stop 才能清理鎖文件

標準流程

  1. 優雅停止:systemctl stop mysqld 或 /etc/init.d/mysqld stop
  2. 跳過授權表啟動:
    mysqld_safe --skip-grant-tables --skip-networking --user=mysql &
    # --skip-grant-tables: 禁用權限檢查
    # --skip-networking: 僅本地 Unix Socket 連接,防外部訪問
    # --user=mysql: 指定運行用戶
    # &: 後台運行
  3. 無密碼登錄修改:
    mysql -uroot mysql
    mysql> UPDATE user SET password=PASSWORD('NewStrongPass#2024') WHERE User='root';
    mysql> FLUSH PRIVILEGES;
    mysql> EXIT;
  4. 正常重啟:
    pkill mysqld_safe
    systemctl start mysqld
  5. 驗證: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;

若必須開放 Root 遠程(強烈不推薦生產環境)

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   # 確保未禁用網絡

修改後重啟服務生效。

安全加固清單

  1. 刪除匿名用戶:DELETE FROM mysql.user WHERE User='';
  2. 刪除 test 庫:DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test%';
  3. 禁用 Root 遠程:DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';
  4. 密碼複雜度插件:INSTALL PLUGIN validate_password SONAME 'validate_password.so';
  5. 審計日誌:INSTALL PLUGIN audit_log SONAME 'audit_log.so';

總結對比

場景核心操作風險等級適用環境
知密碼改密mysqladmin / UPDATE user低所有
忘密碼重置mysqld_safe --skip-grant-tables中(需系統權限)所有
遠程授權CREATE USER @'%' + GRANT高(生產禁用 root@%)開發/測試

掌握三大場景操作流程,配合安全加固清單,即可安全完成 MySQL 密碼管理與訪問控制配置。

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