預設 MySQL 僅允許 localhost 連線,需建立允許遠程主機的帳號並調整防火牆。
-- 允許任意 IP 連線 (生產環境建議限制具體 IP)
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'strong_password';
-- 或限制特定 IP
CREATE USER 'remote_user'@'192.168.1.%' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'remote_user'@'%';
FLUSH PRIVILEGES;
編輯 my.cnf (Linux) 或 my.ini (Windows),確保:
[mysqld]
bind-address = 0.0.0.0 # 監聽所有介面,預設可能是 127.0.0.1
# skip-networking # 確保此行被註解
修改後重啟 MySQL 服務:systemctl restart mysqld
# firewalld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
<?php
$mysqli = new mysqli('192.168.1.100', 'remote_user', 'strong_password', 'mydb', 3306);
if ($mysqli->connect_errno) {
die('連線失敗: ' . $mysqli->connect_error);
}
echo '遠程連線成功';
root 遠程登入REQUIRE SSL)mysql.user 表移除無用帳號完成上述設定,即可安全地從應用伺服器遠程存取 MySQL 資料庫。