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

Ubuntu 20.04下MySQL停止后无法启动(错误13:权限拒绝)求助

我之前在DigitalOcean的1GB LAMP栈上遇到过几乎一模一样的问题,结合你给出的日志和症状,咱们一步步来排查解决:

问题核心诊断

从你的日志能看出两个关键问题:

  1. MySQL服务频繁自动重启(一会儿显示ready for connections,一会儿又重新启动进程),这直接导致WordPress上传媒体时触发“数据库连接错误”;
  2. 手动重启MySQL失败,提示Error: 13 (Permission denied)——虽然你说/var/lib/mysql属mysql用户、/usr/sbin/mysqld是root所有,但还有几个容易忽略的权限细节。
分步解决方案

1. 先排查AppArmor权限限制(Ubuntu默认启用)

Ubuntu 20.04自带的AppArmor会限制进程的文件访问范围,哪怕文件本身权限正确,也可能被拦截:

  • 先查看MySQL的AppArmor状态:
    sudo aa-status | grep mysql
    
  • 如果输出显示/usr/sbin/mysqld处于enforced状态,先临时切换到“投诉模式”测试:
    sudo aa-complain /usr/sbin/mysqld
    
    然后尝试重启MySQL:
    sudo systemctl start mysql
    
    如果能成功启动,说明是AppArmor规则的问题。接下来调整规则:
    sudo nano /etc/apparmor.d/usr.sbin.mysqld
    
    确保文件中包含以下路径的访问权限(没有的话就添加):
    /var/lib/mysql/ r,
    /var/lib/mysql/** rwk,
    /var/log/mysql/ r,
    /var/log/mysql/** rw,
    /var/run/mysqld/ rw,
    
    保存后重新加载规则:
    sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
    

2. 修复MySQL目录的深层权限问题

有时候表面看/var/lib/mysql权限正确,但子目录或文件的所有者/权限可能异常:

  • 递归重置/var/lib/mysql的所有者:
    sudo chown -R mysql:mysql /var/lib/mysql
    
  • 同时设置正确的目录执行权限(MySQL需要执行权限才能进入目录):
    sudo chmod -R 750 /var/lib/mysql
    
    ⚠️ 不要用777,会带来严重安全风险。

3. 查看MySQL启动的具体权限报错

直接手动启动mysqld,能得到更详细的错误提示,定位具体哪个文件/目录没权限:

sudo -u mysql /usr/sbin/mysqld

比如可能是/var/log/mysql的权限不对,或者临时目录/tmp的权限异常,根据提示修复即可。

4. 解决MySQL频繁重启+WordPress连接问题

当MySQL能稳定启动后,还要处理“MySQL server has gone away”的根源——1GB VPS内存不足:

  • 编辑MySQL配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,调整参数适配小内存:
    max_allowed_packet = 64M       # 解决大文件上传时的数据包问题
    wait_timeout = 600
    interactive_timeout = 600
    innodb_buffer_pool_size = 256M # 1GB内存建议设为物理内存的1/4-1/3
    key_buffer_size = 64M
    
  • 修复WordPress数据库并优化连接:
    在wp-config.php中添加:
    define('WP_ALLOW_REPAIR', true);
    define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
    
    访问http://你的域名/wp-admin/maint/repair.php完成数据库修复,之后记得把WP_ALLOW_REPAIR改为false。

5. 处理/etc/securetty的警告

这个警告虽然和MySQL启动无关,但可以解决掉避免干扰:

sudo touch /etc/securetty
sudo chmod 600 /etc/securetty
sudo chown root:root /etc/securetty
总结

先解决MySQL启动的权限问题(重点排查AppArmor和深层目录权限),再调整MySQL配置适配1GB内存的VPS,最后修复WordPress的数据库连接问题,应该就能彻底解决你的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:05:44