MySQL 官方文檔列出的 23 項安全注意事項,涵蓋網絡傳輸、認證授權、文件權限、參數配置、應用層防注入等全維度,構建纵深防御體系。
require_secure_transport=ON (5.7+),或配置 SSL 憑證。SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd'); FLUSH PRIVILEGES;PROCESS、SUPER、FILE、SHUTDOWN 等高危權限。DROP USER ''@'%'; DROP USER ''@'localhost';validate_password 插件,強制長度、大小寫、數字、特殊字符。nmap/telnet 掃描驗證。bind-address=127.0.0.1 (僅本地) 或具體內網 IP,絕不 0.0.0.0。skip-name-resolve 禁用 DNS 反解,減少延遲與欺騙風險,授權表僅用 IP。PreparedStatement / ORM 安全 API。escape_string / mysql_real_escape_string。user=mysql,數據目錄擁有者 mysql:mysql,權限 750。skip-symbolic-links 防止任意文件讀取。local-infile=0 禁用客戶端本地文件導入 (防任意文件讀取)。skip-show-database 隱藏庫列表信息。max_user_connections 防單用戶佔用所有連接。GRANT ... WITH MAX_QUERIES_PER_HOUR ... 限制資源消耗。audit_log 插件或社區版 MariaDB Audit Plugin 記錄所有操作。1. 停止服務
2. mysqld_safe --skip-grant-tables --skip-networking &
3. mysql -u root mysql
4. UPDATE user SET authentication_string=PASSWORD('newpwd') WHERE user='root'; -- 5.7+ authentication_string
5. FLUSH PRIVILEGES;
6. 正常重啟服務