phpEnv是很多开发者常用的本地集成开发环境,其中内置的MySQL数据库如果配置不当,很容易遭遇暴力破解攻击,导致数据泄露或者环境被破坏。做好MySQL的防攻击设置,是本地开发环境安全的重要一环。

修改MySQL默认端口
MySQL默认使用3306端口,这是攻击者暴力破解的首选目标,修改默认端口可以减少大部分自动化扫描攻击。在phpEnv中修改端口的步骤如下:
- 打开phpEnv面板,找到MySQL服务对应的配置选项
- 编辑
my.ini配置文件,找到[mysqld]段落 - 添加或修改
port=自定义端口,端口建议选择1024到65535之间未被占用的数值 - 保存配置后重启MySQL服务使设置生效
修改后的连接配置示例:
<?php
// 连接修改后的MySQL端口
$conn = mysqli_connect('127.0.0.1', 'root', 'your_password', 'test_db', 3307);
if (!$conn) {
die('连接失败: ' . mysqli_connect_error());
}
echo '连接成功';
?>
设置高强度MySQL密码
弱密码是暴力破解成功的主要原因,需要为MySQL账户设置符合安全规范的密码:
- 密码长度不低于12位,包含大小写字母、数字和特殊符号
- 避免使用生日、常用单词、连续数字等易猜测的组合
- 禁止使用phpEnv默认的空密码或者简单密码
修改root账户密码的SQL命令如下:
-- 修改root用户密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Strong_Pass_2024!@#$'; -- 刷新权限使修改生效 FLUSH PRIVILEGES;
限制MySQL访问来源
默认情况下MySQL可能允许所有IP访问,需要限制只允许本地或者指定IP连接:
- 检查用户权限,删除不必要的远程访问用户
- 将root用户的host限制为
localhost或者127.0.0.1,禁止远程连接 - 如果有远程访问需求,仅开放指定IP的访问权限
查看和限制用户访问权限的SQL命令:
-- 查看所有用户及对应的访问host SELECT user, host FROM mysql.user; -- 删除允许任意IP访问的root用户 DROP USER 'root'@'%'; -- 创建只允许本地访问的root用户(如果不存在) CREATE USER 'root'@'localhost' IDENTIFIED BY 'Strong_Pass_2024!@#$'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
启用登录失败锁定策略
通过安装插件实现登录失败锁定,防止连续暴力尝试:
- 登录MySQL执行命令安装
CONNECTION_CONTROL和CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS插件 - 配置失败尝试阈值和锁定时间
相关配置SQL命令:
-- 安装插件 INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so'; INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so'; -- 配置失败3次后锁定账户300秒 SET GLOBAL connection_control_failed_connections_threshold = 3; SET GLOBAL connection_control_min_connection_delay = 300000; -- 查看配置是否生效 SHOW VARIABLES LIKE 'connection_control%';
其他辅助防护措施
- 定期查看MySQL的登录日志,排查异常登录尝试
- 在phpEnv中保持MySQL版本为最新,及时修复已知安全漏洞
- 不要将MySQL端口映射到公网,本地开发环境仅保留本地访问即可
- 定期备份数据库数据,即使遭遇攻击也能快速恢复
完成以上设置后,phpEnv中的MySQL数据库可以有效抵御大部分暴力破解攻击,大幅提升本地开发环境的数据安全性。