在阿里雲 ECS(或任意雲主機)開放 MySQL 3306 遠程連線,需完成三層授權:MySQL 賬號授權、系統防火牆放行、雲廠商安全組放行。缺一不可。
cat /你的安裝路徑/account.log
# 例:cat /alidata/account.log
mysql -u root -p
UPDATE mysql.user SET authentication_string=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
MySQL 5.7+ 用 authentication_string,5.6 用 password。
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
Host='%' 表示允許任意 IP 連線。
service mysqld restart
# 或 systemctl restart mysqld
mysql -u root -p
SELECT CURRENT_USER(); -- 確認以 root@% 身分登入
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports # 驗證
vi /etc/sysconfig/iptables
# 在 COMMIT 前插入:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
service iptables restart
iptables -L -n | grep 3306
# 本機/辦公電腦
mysql -h -P 3306 -u root -p
# 或使用 Navicat、DataGrip 等 GUI 工具測試
| 風險 | 對策 |
|---|---|
| root 直接對公網開放 3306 | 建專用讀寫/唯讀賬號、強密碼、限定來源 IP |
| 安全組 0.0.0.0/0 | 僅授信辦公 IP/跳板機 IP 段 |
| 明文傳輸 | 啟用 SSL:REQUIRE SSL、客戶端配置 CA 證書 |
| 暴力破解 | fail2ban 監控錯誤日誌封禁 IP、修改預設埠、禁用 root 遠程 |