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

影響 mysqld 安全性的關鍵啟動選項:--secure、--skip-grant-tables 等深度解析

     編輯:MySQL 資料庫相關知識

安全相關啟動選項對照表

選項功能描述安全影響
--secure (或 --secure-auth) 驗證 gethostbyname() 回傳 IP 反解析是否回原主機名;加強主機名檢查 增強:防止主機偽裝攻擊,提高基於主機名授權的可靠性
--skip-grant-tables 完全跳過權限系統,**所有人獲得所有資料庫完全存取權** 極度危險:僅限緊急救援 (如忘記 root 密碼) 短暫使用,必須配合 --skip-networking 限制本地存取
--skip-name-resolve 不解析主機名,授權表 Host 欄只能用 IP 或 localhost 增強:消除 DNS 攻擊面,加速連線建立;需確保所有帳號 Host 欄位為 IP
--skip-networking 禁用 TCP/IP 連線,僅允許 Unix Socket 本地連線 增強:阻斷所有網路攻擊面;不適用於需遠端存取的環境,也不支援 MIT-pthreads 系統

實務建議組合

生產環境推薦

[mysqld]
skip-name-resolve
secure-auth
# 僅允許本地應用連線時啟用:
# skip-networking
bind-address = 127.0.0.1  # 或特定內網 IP

緊急重置 root 密碼流程

  1. 停止 MySQL:systemctl stop mysqld
  2. 以 --skip-grant-tables --skip-networking 啟動:mysqld_safe --skip-grant-tables --skip-networking &
  3. 無密碼登入:mysql -u root
  4. 更新密碼:UPDATE mysql.user SET authentication_string=PASSWORD('NewPass') WHERE User='root'; FLUSH PRIVILEGES;
  5. 正常重啟 MySQL。
警告: --skip-grant-tables 期間資料庫完全無保護,務必同時啟用 --skip-networking 並限制最短時間窗口。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved