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

Linux 下實現 MySQL 遠程登入三大法:改表法、授權法、修改 bind-address

     編輯:MySQL 綜合教學

問題本質

MySQL 預設僅允許 localhost 連線,遠程連線需解決兩層限制:
1. 帳號宿主限制(mysql.user.Host 欄位)
2. 網路綁定限制(my.cnf 的 bind-address)

方法一:改表法(直接修改 user 表)

mysql -u root -p
USE mysql;
UPDATE user SET Host='%' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
SELECT Host, User FROM user;  -- 驗證
風險:root@% 允許任意 IP 以 root 登入,生產環境極度不建議。

方法二:授權法(建立專用遠程帳號,最佳實踐)

-- 允許 kevin 從任意 IP 連線
GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

-- 僅允許特定 IP
GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'192.168.101.234' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH PRIVILEGES;
  • 遵循最小權限原則:僅授予必要資料庫/表權限,避免 *.*。
  • MySQL 8.0+ 語法:
    CREATE USER 'kevin'@'192.168.101.234' IDENTIFIED BY 'mypassword';
    GRANT ALL ON mydb.* TO 'kevin'@'192.168.101.234';

方法三:修改 bind-address(網路層解除綁定)

  1. 編輯設定檔:
    vi /etc/mysql/my.cnf 或 /etc/my.cnf
  2. 找到 [mysqld] 區段,註釋或修改:
    # bind-address = 127.0.0.1
    或改為 bind-address = 0.0.0.0(監聽所有介面)
  3. 重啟服務:
    service mysql restart
若雲端伺服器(AWS/Azure/GCP)有安全群組/防火牆,務必同步開放 3306 埠 給來源 IP。

完整檢查清單

層級檢查項目指令/位置
帳號user 表 Host 欄位是否為 % 或特定 IPSELECT User, Host FROM mysql.user;
權限GRANT 是否生效SHOW GRANTS FOR 'user'@'host';
網路bind-address 是否為 0.0.0.0 或註釋/etc/mysql/my.cnf
防火牆3306 埠是否放行iptables -L / ufw status / firewall-cmd
雲端安全群組入站規則雲端控制台

MySQL 遠程登入配置流程

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