温馨提示×

centos mysql网络设置注意事项

小樊
40
2025-10-25 20:36:59
栏目: 云计算

1. 修改MySQL配置文件绑定IP
CentOS系统中,MySQL默认通过bind-address参数限制监听的IP地址(通常为127.0.0.1,仅允许本地连接)。若需允许远程访问,需修改配置文件(路径通常为/etc/my.cnf/etc/mysql/my.cnf),在[mysqld] section中将bind-address设置为0.0.0.0(监听所有网络接口)或服务器具体IP地址(仅允许特定接口访问)。修改后需重启MySQL服务使配置生效:sudo systemctl restart mysqld。需注意,bind-address = 0.0.0.0会暴露数据库到所有网络接口,生产环境中建议结合防火墙限制访问IP,提升安全性。

2. 配置防火墙允许MySQL端口
CentOS默认使用firewalld作为防火墙管理工具,需开放MySQL默认端口3306(TCP协议)以允许外部连接。操作步骤如下:

  • 添加端口规则(永久生效):sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
  • 重新加载防火墙配置:sudo firewall-cmd --reload
    若系统使用iptables,可执行sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT并保存规则(sudo service iptables save)。需确保防火墙规则配置正确,否则会导致远程连接被拒绝。

3. 授权远程访问用户权限
MySQL默认仅允许root用户从localhost(本地)登录。若需远程访问,需为用户授予远程权限。操作步骤如下:

  • 登录MySQL控制台:mysql -u root -p
  • 检查用户权限:SELECT User, Host FROM mysql.user;(默认root用户的Hostlocalhost);
  • 授权远程访问:
    • 方式1(修改现有用户):UPDATE mysql.user SET Host='%' WHERE User='root';%表示允许任意IP连接);
    • 方式2(创建专用用户,更安全):CREATE USER 'admin'@'%' IDENTIFIED BY '强密码'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
  • 刷新权限:FLUSH PRIVILEGES;
    需避免长期使用root远程登录,建议创建专用管理用户并限制其权限。

4. 检查SELinux配置(若启用)
若CentOS系统启用了SELinux(sestatus命令显示enabled),需确保SELinux允许MySQL端口的外部访问。操作步骤如下:

  • 安装policycoreutils-python包(若未安装):sudo yum install policycoreutils-python
  • 添加MySQL端口规则:sudo semanage port -a -t mysqld_port_t -p tcp 3306
  • 验证规则:sudo semanage port -l | grep mysqld(应显示mysqld_port_t tcp 3306)。
    若未正确配置SELinux,可能会导致数据库连接被SELinux阻止。

5. 验证网络连通性与服务状态

  • 确认MySQL服务运行状态:sudo systemctl status mysqld(应显示active (running));
  • 测试本地连接:mysql -u root -p(输入密码,应能正常登录);
  • 测试远程连接:从另一台机器使用mysql -h <服务器IP> -u 用户名 -p(替换为实际IP和用户名),验证是否能连接。
    若无法连接,需依次排查:配置文件bind-address是否正确、防火墙是否放行端口、SELinux是否阻止、网络是否连通(ping <服务器IP>)。

6. 生产环境安全增强建议

  • 限制访问IP:在bind-address中指定具体IP(如192.168.1.100),而非0.0.0.0,并通过防火墙规则(如firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept')进一步限制允许访问的IP段;
  • 使用强密码:为数据库用户设置复杂密码(包含大小写字母、数字、特殊字符),避免使用默认密码或弱密码;
  • 启用SSL加密:通过ALTER USER 'root'@'%' REQUIRE SSL;命令要求远程连接使用SSL加密,防止密码被窃听;
  • 定期更新密码:定期修改数据库用户密码(如每3个月),降低密码泄露风险。

0