AWS EC2上MySQL连接失败(Error 13权限拒绝)求助
解决MySQL服务启动失败及连接问题的步骤
一、先修复MySQL启动失败的核心问题(权限错误)
从日志反馈来看,MySQL启动失败的直接原因是无法写入/var/log/mysqld.log,这是文件权限或所有者配置异常导致的,按以下步骤处理:
检查日志文件的当前权限和所有者
ls -l /var/log/mysqld.log正常情况下,文件所有者应为
mysql:mysql,权限为-rw-r-----(即640)。如果文件不存在,先创建它
touch /var/log/mysqld.log修改文件所有者为mysql用户组
chown mysql:mysql /var/log/mysqld.log设置正确的文件权限
chmod 640 /var/log/mysqld.log尝试启动MySQL服务并检查状态
systemctl start mysqld systemctl status mysqld如果状态显示
active (running),说明启动成功。
二、修复远程连接问题(SQL Workbench访问)
MySQL启动后,还需要确保远程连接配置正确:
验证MySQL用户的远程访问权限
通过SSH登录EC2后,进入MySQL命令行:mysql -u root -p查看现有用户的访问权限:
SELECT user, host FROM mysql.user;如果你用来连接的用户(比如WordPress的数据库用户或Workbench专用用户)的
host列是localhost,需要修改为允许远程访问(建议限制为你的IP,而非%,更安全):ALTER USER 'your_username'@'%' IDENTIFIED BY 'your_password'; -- 或者限制为你的固定IP:ALTER USER 'your_username'@'your_public_ip' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES;检查EC2安全组配置
登录AWS控制台,找到对应EC2实例的安全组,确保入站规则中允许你的IP访问3306端口(MySQL默认端口),不要开放给0.0.0.0/0,避免被攻击。检查服务器防火墙
如果服务器启用了firewalld,允许3306端口:firewall-cmd --add-port=3306/tcp --permanent firewall-cmd --reload如果是
iptables,则添加对应规则:iptables -A INPUT -p tcp -s your_public_ip --dport 3306 -j ACCEPT service iptables save
三、关于Nginx日志中的.env请求错误
这个错误是正常的防护结果——有扫描器尝试访问你的服务器找.env文件(通常存储敏感配置),Nginx已经阻止了该请求。为了进一步安全:
- 确保你的服务器web根目录下不存在
.env文件,如果有,移到web目录外; - 可以在Nginx配置中添加规则,彻底禁止访问所有带
.前缀的隐藏文件:
然后重启Nginx:location ~ /\. { deny all; }systemctl restart nginx
内容的提问来源于stack exchange,提问作者kiteandwindsurfer
相关产品推荐
相关产品推荐

