0

0

mysql如何配置防火墙允许访问

P粉602998670

P粉602998670

发布时间:2025-09-20 08:19:01

|

435人浏览过

|

来源于php中文网

原创

要允许外部访问MySQL,需配置防火墙开放3306端口并修改MySQL的bind-address为0.0.0.0或指定IP,同时确保用户权限设置正确,并在云服务器上配置安全组规则。

mysql如何配置防火墙允许访问

要允许外部访问 MySQL,配置防火墙是关键。本质上,我们需要开放 MySQL 默认的 3306 端口(或者你自定义的端口)。

解决方案:

  1. 确定防火墙类型: 常见的有

    firewalld
    (CentOS, RHEL 等)、
    ufw
    (Ubuntu)、
    iptables
    。不同防火墙配置命令不同。

  2. 使用

    firewalld
    (CentOS/RHEL):

    • 检查
      firewalld
      状态:
      sudo firewall-cmd --state
    • 如果未运行,启动
      firewalld
      sudo systemctl start firewalld
    • 永久允许 3306 端口:
      sudo firewall-cmd --permanent --add-port=3306/tcp
    • 重新加载防火墙规则:
      sudo firewall-cmd --reload
    • 验证端口是否已打开:
      sudo firewall-cmd --list-all
      (查看
      ports
      部分是否包含
      3306/tcp
      )
  3. 使用

    ufw
    (Ubuntu):

    • 启用
      ufw
      sudo ufw enable
    • 允许 3306 端口:
      sudo ufw allow 3306
    • 查看
      ufw
      状态:
      sudo ufw status
      (确认 3306 端口已允许)
  4. 使用

    iptables
    (通用):

    • 允许 TCP 流量到 3306 端口:
      sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    • 保存
      iptables
      规则(不同系统命令不同,例如 Debian/Ubuntu:
      sudo iptables-save > /etc/iptables/rules.v4
      ;CentOS/RHEL: 需要安装
      iptables-services
      并使用
      sudo service iptables save
  5. MySQL 配置 (重要): 仅仅开放防火墙端口是不够的,还需要确保 MySQL 允许来自外部的连接。

    沁言学术
    沁言学术

    你的论文写作AI助理,永久免费文献管理工具,认准沁言学术

    下载
    • 编辑 MySQL 配置文件 (
      my.cnf
      my.ini
      ),找到
      bind-address
    • 如果
      bind-address
      设置为
      127.0.0.1
      localhost
      ,则只允许本地连接。需要修改为
      0.0.0.0
      (允许所有 IP 连接,不推荐,不安全) 或者指定允许连接的 IP 地址。
    • 修改后重启 MySQL 服务:
      sudo systemctl restart mysql
      (或相应的命令)。
  6. 用户权限: 确保 MySQL 用户有从外部 IP 连接的权限。

    • 登录 MySQL:
      mysql -u root -p
    • 创建允许外部连接的用户(例如,允许
      user
      192.168.1.100
      连接):
      CREATE USER 'user'@'192.168.1.100' IDENTIFIED BY 'password';
    • 允许
      user
      从任何 IP 连接(同样不推荐,不安全):
      CREATE USER 'user'@'%' IDENTIFIED BY 'password';
    • 授权用户权限(例如,授予
      user
      所有数据库的全部权限):
      GRANT ALL PRIVILEGES ON *.* TO 'user'@'192.168.1.100';
      GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
    • 刷新权限:
      FLUSH PRIVILEGES;

如何确认防火墙规则生效?

最简单的办法是使用

telnet
nc
命令从外部机器测试端口连通性。例如:
telnet  3306
nc -vz  3306
。如果连接成功,说明防火墙规则生效。如果连接超时或被拒绝,则需要检查防火墙配置和 MySQL 配置。

为什么修改
bind-address
0.0.0.0
不安全?

bind-address
设置为
0.0.0.0
意味着 MySQL 服务器将监听所有网络接口上的连接。这使得任何能够访问服务器 IP 地址的人都可以尝试连接到 MySQL 服务器。如果 MySQL 服务器没有采取其他安全措施(例如,使用强密码、限制用户权限、启用 SSL 加密),则可能会受到安全攻击。更好的做法是只允许特定 IP 地址或 IP 地址范围连接到 MySQL 服务器。

如果我使用了云服务器,还需要配置什么?

如果你的 MySQL 服务器运行在云服务器上(例如,AWS EC2、阿里云 ECS、腾讯云 CVM),除了配置服务器自身的防火墙(如

firewalld
ufw
)之外,还需要配置云服务器的安全组规则。安全组相当于云服务器的另一层防火墙,需要显式地允许 3306 端口的入站流量。否则,即使服务器自身的防火墙已经开放了 3306 端口,外部仍然无法连接到 MySQL 服务器。

如何使用 SSL 加密 MySQL 连接?

为了提高 MySQL 连接的安全性,建议使用 SSL 加密。这可以防止数据在传输过程中被窃听或篡改。配置 SSL 加密涉及到生成 SSL 证书和密钥,并在 MySQL 服务器和客户端上进行配置。具体步骤可以参考 MySQL 官方文档或相关的教程。启用 SSL 加密后,客户端连接 MySQL 服务器时需要指定 SSL 相关的参数。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

663

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

246

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

514

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

253

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

386

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

529

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

599

2023.08.14

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.8万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 801人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号