許多MySQL數據庫管理員都可能遇到過這個問題:他們無法從遠程主機連接到MySQL服務器的3306端口。這通常是由于MySQL的入站規則導致,具體原因如下:
# 允許本地進程通過TCP連接MySQL 3306端口 -A INPUT -i lo -p tcp -m tcp --dport 3306 -j ACCEPT # 允許特定IP地址通過TCP連接MySQL 3306端口 -A INPUT -s 192.0.2.0/24 -p tcp -m tcp --dport 3306 -j ACCEPT # 允許特定IP地址范圍通過TCP連接MySQL 3306端口 -A INPUT -s 192.0.2.0/24 -p tcp -m tcp --dport 3306:3307 -j ACCEPT # 允許所有遠程主機通過SSH隧道連接MySQL 3306端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
在這些規則中,只有前兩個才允許通過TCP連接MySQL服務器的3306端口。第一個規則允許本地進程通過,第二個規則允許特定IP地址連接。如果您告訴MySQL服務器接受所有遠程連接,那么入站規則將無法允許連接,因為它們不包括“任何”或“所有”。
解決這個問題的方式是簡單的:您需要將您的入站規則修改為允許從需要連接MySQL服務器的所有遠程主機連接。您可以按以下方式完成:
# 允許所有遠程主機連接MySQL 3306端口 -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
現在,所有遠程主機都可以連接您的MySQL服務器的3306端口。