You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2上MySQL连接失败(Error 13权限拒绝)求助

解决MySQL服务启动失败及连接问题的步骤

一、先修复MySQL启动失败的核心问题(权限错误)

从日志反馈来看,MySQL启动失败的直接原因是无法写入/var/log/mysqld.log,这是文件权限或所有者配置异常导致的,按以下步骤处理:

  1. 检查日志文件的当前权限和所有者

    ls -l /var/log/mysqld.log
    

    正常情况下,文件所有者应为mysql:mysql,权限为-rw-r-----(即640)。

  2. 如果文件不存在,先创建它

    touch /var/log/mysqld.log
    
  3. 修改文件所有者为mysql用户组

    chown mysql:mysql /var/log/mysqld.log
    
  4. 设置正确的文件权限

    chmod 640 /var/log/mysqld.log
    
  5. 尝试启动MySQL服务并检查状态

    systemctl start mysqld
    systemctl status mysqld
    

    如果状态显示active (running),说明启动成功。

二、修复远程连接问题(SQL Workbench访问)

MySQL启动后,还需要确保远程连接配置正确:

  1. 验证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;
    
  2. 检查EC2安全组配置
    登录AWS控制台,找到对应EC2实例的安全组,确保入站规则中允许你的IP访问3306端口(MySQL默认端口),不要开放给0.0.0.0/0,避免被攻击。

  3. 检查服务器防火墙
    如果服务器启用了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配置中添加规则,彻底禁止访问所有带.前缀的隐藏文件:
    location ~ /\. {
        deny all;
    }
    
    然后重启Nginx:systemctl restart nginx

内容的提问来源于stack exchange,提问作者kiteandwindsurfer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:15:38