| 選項 | 功能說明 | 預設/建議 |
|---|---|---|
--allow-suspicious-udfs | 允許載入僅有主函數(xxx)的UDF。關閉時需至少有輔助符號 | 關閉(預設) |
--local-infile[={0|1}] | 控制LOAD DATA LOCAL功能。0=禁用 | 1(二進制發布預設啟用) |
--old-passwords | 生成pre-4.1短密碼雜湊,相容舊版客戶端 | 視相容需求啟用 |
--safe-show-database | (已廢棄) 限制SHOW DATABASES顯示有權限的庫。5.1+用SHOW DATABASES權限控制 | 廢棄 |
--safe-user-create | 用戶需有mysql.user表INSERT權限才能用GRANT建用戶 | 建議啟用 |
--secure-auth | 拒絕pre-4.1舊密碼雜湊的帳號認證 | 建議啟用 |
--skip-grant-tables | 完全跳過權限系統,所有人擁有所有資料庫完全存取權! | 極度危險,僅緊急救援用 |
--skip-name-resolve | 不解析主機名,授權表Host欄只能用IP或localhost | 建議啟用(提升連線速度、避免DNS故障) |
--skip-networking | 禁用TCP/IP連線,僅允許Unix Socket/Windows命名管道/共享記憶體 | 單機部署建議啟用 |
--skip-show-database | 僅允許有SHOW DATABASES權限的用戶執行該指令 | 建議啟用 |
啟用後,若要讓用戶有建用戶權限,需精確授予:
GRANT INSERT(user) ON mysql.user TO 'user_name'@'host_name';
確保用戶無法直接修改權限欄,必須透過GRANT語句授權。
mysql -u rootUPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root'; FLUSH PRIVILEGES;[mysqld]
skip-networking # 僅本機Socket連線
skip-name-resolve # 禁用DNS反解
bind-address=127.0.0.1 # 僅綁定回環介面(若需網路)
安全原則:最小權限、最小暴露面。生產環境建議預設啟用--skip-name-resolve、--secure-auth、--safe-user-create、--skip-show-database,視架構決定--skip-networking。