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 -u root -p;SELECT User, Host FROM mysql.user;(默认root用户的Host为localhost);UPDATE mysql.user SET Host='%' WHERE User='root';(%表示允许任意IP连接);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;sudo semanage port -a -t mysqld_port_t -p tcp 3306;sudo semanage port -l | grep mysqld(应显示mysqld_port_t tcp 3306)。5. 验证网络连通性与服务状态
sudo systemctl status mysqld(应显示active (running));mysql -u root -p(输入密码,应能正常登录);mysql -h <服务器IP> -u 用户名 -p(替换为实际IP和用户名),验证是否能连接。bind-address是否正确、防火墙是否放行端口、SELinux是否阻止、网络是否连通(ping <服务器IP>)。6. 生产环境安全增强建议
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段;ALTER USER 'root'@'%' REQUIRE SSL;命令要求远程连接使用SSL加密,防止密码被窃听;