Centos 防火墙开启mysql 3306端口

本文详细介绍了如何在Linux系统中使用firewall-cmd命令永久开启3306端口,这对于远程连接数据库服务至关重要。通过遵循教程步骤,用户可以确保其MySQL或MariaDB服务对外部访问开放。

大部分按照这个来操作:

  1. https://blog.youkuaiyun.com/m0_47073109/article/details/119784255
  2. 开启端口的命令改为: firewall-cmd --permanent --zone=public --add-port=3306/tcp
<think> 我们参考了用户提供的引用资料,关于开启防火墙MySQL端口(默认3306)的方法,主要涉及CentOS(使用firewalld)和Windows两种操作系统的操作。此外,还提到了Linux下使用iptables(旧版)的方法。下面将分步骤详细说明: ### 🔥 一、CentOS 7+(使用firewalld) 1. **查看防火墙状态** ```bash systemctl status firewalld ``` 如果未运行,则启动: ```bash systemctl start firewalld ``` 2. **开启3306端口** ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent ``` `--permanent` 表示永久生效。 3. **重新加载防火墙** ```bash firewall-cmd --reload ``` 4. **验证端口是否开放** ```bash firewall-cmd --list-ports ``` 或查看所有开放的服务: ```bash firewall-cmd --list-all ``` ### 🛡️ 二、旧版CentOS(使用iptables) 1. **开启3306端口** ```bash iptables -A INPUT -p tcp --dport 3306 -j ACCEPT ``` 2. **保存规则** ```bash service iptables save # 或使用/etc/init.d/iptables save ``` 3. **重启防火墙** ```bash service iptables restart ``` ### 💻 三、Windows系统 1. **打开控制面板** → **系统和安全** → **Windows Defender 防火墙** → **高级设置** 2. **入站规则** → **新建规则** 3. 选择 **端口** → **下一步** 4. 输入 **3306** → **下一步** 5. 选择 **允许连接** → **下一步** 6. 选择应用规则的范围(域、专用、公用)→ **下一步** 7. 输入规则名称(如"MySQL Port 3306")→ **完成** ### 📌 四、注意事项 1. **MySQL绑定地址** 确保MySQL配置文件(`my.cnf`或`my.ini`)中的`bind-address`设置为: ``` bind-address = 0.0.0.0 # 允许所有IP访问 ``` 或注释掉该行(默认监听所有接口)。 2. **用户远程访问权限** 在MySQL中授权用户远程访问(参考之前解决ERROR 1410的方法): ```sql GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 3. **云服务器安全组** 如果使用云服务器(如AWS、阿里云),还需在控制台安全组中开放3306端口[^1][^2]。 ### 验证连接 使用telnet测试端口是否开放: ```bash telnet 服务器IP 3306 ``` 如果连接成功,则端口已开放。 §§相关问题§§ 1. 如何配置MySQL只允许特定IP访问? 2. 防火墙开启端口后仍无法连接MySQL的排查步骤? 3. 如何修改MySQL默认端口以避免攻击? 4. 云服务器(如阿里云ECS)如何配置安全组规则? 5. Windows防火墙如何批量开放端口? [^1]: 引用自优快云博客《Centos 防火墙开启mysql 3306端口》 [^2]: 引用自《linux下mysql开启远程访问权限及防火墙开放3306端口》 [^3]: 引用自《mysql数据开启远程登录,修改端口,开放防火墙端口》 [^4]: 引用自《windows开启3306端口访问mysql》 </think>### 🔥 开启防火墙MySQL 端口(默认 3306)的方法 #### 💻 一、CentOS 7+/RHEL(使用 firewalld) 1. **查看防火墙状态** ```bash systemctl status firewalld ``` 若未运行则启动: ```bash systemctl start firewalld ``` 2. **永久开放 3306 端口** ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent ``` 3. **重载防火墙配置** ```bash firewall-cmd --reload ``` 4. **验证端口是否开放** ```bash firewall-cmd --list-ports | grep 3306 # 或查看所有开放端口 firewall-cmd --list-all ``` #### 🐧 二、旧版 Linux(使用 iptables) 1. **开放端口** ```bash iptables -A INPUT -p tcp --dport 3306 -j ACCEPT ``` 2. **保存规则** ```bash service iptables save # CentOS 6 /sbin/iptables-save > /etc/sysconfig/iptables # 通用方法 ``` 3. **重启防火墙** ```bash service iptables restart ``` #### 🪟 三、Windows 系统 1. 打开 **控制面板 > Windows Defender 防火墙 > 高级设置** 2. 选择 **入站规则 > 新建规则** 3. 选择 **端口 > TCP > 特定端口3306** 4. 选择 **允许连接** 5. 勾选所有网络类型(域/专用/公用) 6. 输入规则名称如 "MySQL Port 3306" 7. 点击 **完成** #### ⚙️ 四、MySQL 配置检查 1. **修改绑定地址** 编辑 `my.cnf`(Linux)或 `my.ini`(Windows): ```ini [mysqld] bind-address = 0.0.0.0 # 允许所有IP访问 ``` 2. **重启 MySQL 服务** ```bash systemctl restart mysqld # Linux # Windows: 服务管理器重启 MySQL ``` #### 🧪 五、验证端口开放 ```bash # Linux: telnet 服务器IP 3306 # Windows: Test-NetConnection 服务器IP -Port 3306 ``` 成功连接显示: ```bash Trying 192.168.1.100... Connected to 192.168.1.100. Escape character is '^]'. ``` #### ⚠️ 六、重要安全建议 1. **限制访问IP**(更安全): ```bash # 仅允许特定IP段 firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept' ``` 2. **修改默认端口**(防扫描): ```ini [mysqld] port = 3307 # 修改配置文件后重启 ``` 3. **云服务器额外配置**: - 阿里云/腾讯云需在 **安全组规则** 中添加 3306 端口[^1] - AWS 需配置 **安全组入站规则** > **操作示意图**: > ```mermaid > graph LR > A[开始] --> B[检查防火墙状态] > B --> C{类型判断} > C -->|Firewalld| D[添加3306端口] > C -->|iptables| E[添加ACCEPT规则] > C -->|Windows| F[配置入站规则] > D --> G[重载防火墙] > E --> H[保存规则] > F --> I[确认创建] > G --> J[验证端口] > H --> J > I --> J > J --> K[结束] > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值