首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 遠程訪問權限配置避坑指南:從「能連上」到「穩定連」的完整清單

     編輯:MySQL 綜合教學

MySQL 遠程訪問權限配置避坑指南:從「能連上」到「穩定連」的完整清單

作為開發或測試人員,配置 MySQL 遠程訪問幾乎是必經之路。網上教程雖多,但實際操作常因細節疏忽導致「配置了還是連不上」。本文總結高頻坑點,給出生產級配置檢查清單。

核心配置四步走

  1. 創建遠程用戶並授權(推薦指定 IP 段,避免 '%'):
    CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass#2024';
    GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'app_user'@'192.168.1.%';
    FLUSH PRIVILEGES;
  2. 修改綁定地址(/etc/my.cnf 或 /etc/mysql/my.cnf):
    [mysqld]
    bind-address = 0.0.0.0  # 監聽所有網卡,或指定內網 IP
  3. 開放防火牆端口:
    # CentOS 7/8 firewalld
    firewall-cmd --permanent --add-port=3306/tcp
    firewall-cmd --reload
    
    # Ubuntu ufw
    ufw allow 3306/tcp
  4. 重啟服務生效:
    systemctl restart mysqld  # 或 mysql

高頻「隱形坑」排查清單

現象可能原因排查命令/方案
本地能連,遠程超時防火牆/安全組攔截telnet ip 3306;雲廠商控制台放行安全組規則
報錯 Host 'x.x.x.x' is not allowed用戶 host 不匹配SELECT user,host FROM mysql.user;授權時 host 必須與客戶端 IP 一致
報錯 Access denied for user密碼錯誤/插件不匹配MySQL 8.0 默認 caching_sha2_password,舊驅動需改用 mysql_native_password
連接後秒斷skip-name-resolve 缺失導致 DNS 反解慢my.cnf 添加 skip-name-resolve 禁用 DNS 解析
SSL 強制報錯客戶端不支援 SSL用戶創建時 REQUIRE NONE 或客戶端啟用 SSL 參數
修改配置不生效未執行 FLUSH PRIVILEGES / 未重啟服務權限修改必須 FLUSH;bind-address 修改必須重啟 mysqld

生產環境加固建議

  • 最小權限原則:業務賬號僅授予必要庫表權限,禁用 GRANT OPTION、FILE、SHUTDOWN 等高危權限。
  • 禁用 root 遠程登錄:DELETE FROM mysql.user WHERE user='root' AND host!='localhost'; FLUSH PRIVILEGES;
  • 啟用 SSL 傳輸加密:生成憑證配置 require_secure_transport=ON。
  • 审计日志:安裝 audit_log 插件記錄所有登錄與 DDL/DML 操作。
  • 定期輪換密碼:配合 validate_password 插件強制複雜度與過期策略。

一鍵驗證腳本

#!/bin/bash
# check_mysql_remote.sh
HOST=$1
USER=$2
PASS=$3
mysql -h"$HOST" -u"$USER" -p"$PASS" -e "SELECT 1;" >/dev/null 2>&1 && echo "✅ 連接成功" || echo "❌ 連接失敗,請按清單排查"
# 用法:./check_mysql_remote.sh 192.168.1.100 app_user StrongPass#2024

配置無小事,清單在手,遠程訪問不再愁。

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