CentOS MySQL网络配置建议
MySQL默认通过bind-address参数绑定到127.0.0.1(仅本地访问),生产环境中应根据需求调整:
bind-address设置为该服务器IP(如192.168.1.100);0.0.0.0(需配合防火墙限制IP范围,降低安全风险)。/etc/my.cnf(或/etc/mysql/my.cnf),在[mysqld] section添加/修改bind-address,保存后重启MySQL服务(sudo systemctl restart mysqld)。MySQL默认使用3306端口,需确保防火墙允许该端口通信:
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent # 永久添加端口
sudo firewall-cmd --reload # 重新加载配置
sudo setsebool -P mysql_connect_any 1 # 允许MySQL连接任何IP
验证端口是否监听:sudo netstat -tulnp | grep mysqld,应显示0.0.0.0:3306或指定IP的监听状态。
默认情况下,root用户仅能从localhost访问。若需远程访问:
UPDATE mysql.user SET Host='%' WHERE User='root'; -- 修改root用户Host为%
FLUSH PRIVILEGES; -- 刷新权限
CREATE USER 'remote_admin'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'remote_admin'@'%' WITH GRANT OPTION; -- 授权所有权限
FLUSH PRIVILEGES;
生产环境中,建议将%替换为具体IP段(如192.168.1.%),限制访问来源。若默认3306端口易受扫描攻击,可修改为其他端口(如3307):
/etc/my.cnf,在[mysqld] section添加/修改port=3307;sudo systemctl restart mysqld;sudo firewall-cmd --zone=public --add-port=3307/tcp --permanent && sudo firewall-cmd --reload;mysql -u root -p -h <服务器IP> -P 3307。修改/etc/sysctl.conf,优化网络连接性能:
net.core.somaxconn = 65536 # 监听队列最大长度(默认128,需增大避免连接拒绝)
net.ipv4.tcp_max_syn_backlog = 65536 # SYN队列最大长度
net.ipv4.tcp_fin_timeout = 10 # TCP连接超时时间(秒)
net.ipv4.tcp_tw_reuse = 1 # 允许复用TIME-WAIT状态的连接
net.core.rmem_max = 16777216 # 接收缓冲区最大大小
net.core.wmem_max = 16777216 # 发送缓冲区最大大小
应用配置:sudo sysctl -p。
防止密码在网络中被窃听,要求用户使用SSL连接:
ALTER USER 'root'@'%' REQUIRE SSL; -- 强制root用户使用SSL
验证SSL状态:SHOW VARIABLES LIKE '%ssl%';,确保have_ssl为YES。
定期修改MySQL用户密码(尤其是root),使用强密码策略(包含大小写字母、数字、特殊字符):
ALTER USER 'root'@'%' IDENTIFIED BY 'NewStrongPassword456!';
建议每3-6个月更换一次密码。