預設 MySQL 僅允許本地連線,生產環境常需開放遠程訪問。本文說明授權語法、防火牆配置、加密傳輸與最小權限原則,助你安全開放遠程連線。
-- 授予 root 從任意主機(%)以密碼 'root' 訪問所有庫所有表,含 GRANT OPTION GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; -- 立即生效 FLUSH PRIVILEGES;
參數解析:
*.*:所有資料庫、所有表。'root'@'%':用戶 root,% 通配任意 IP。生產建議限制具體網段,如 'app_user'@'10.0.1.%'。IDENTIFIED BY 'root':設定密碼(MySQL 5.7+ 建議用 CREATE USER ... IDENTIFIED BY ... 再 GRANT)。WITH GRANT OPTION:允許該用戶將自己的權限再授予他人,謹慎使用。/etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf 中確保 bind-address = 0.0.0.0(監聽所有介面)或具體內網 IP,預設 127.0.0.1 僅本地。修改後重啟 MySQL。# firewalld 範例 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.1.0/24" port protocol="tcp" port="3306" accept' firewall-cmd --reload
mysql -h-u root -p -P 3306
SELECT/INSERT/UPDATE/DELETE,嚴禁 ROOT/% 直連生產。validate_password 插件,強制長度、複雜度、過期輪換。require_secure_transport=ON,簽發憑證,連線參數加 --ssl-mode=VERIFY_IDENTITY。audit_log 記錄登入、DDM/DCL 操作。SELECT user, host FROM mysql.user; 清理無用/過期帳號。結語:遠程訪問是雙刃劍,遵循「最小權限、網路隔離、加密傳輸、審計追蹤」四原則,才能在便利運維與資料安全間取得平衡。