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

Ubuntu 20.04下执行mysqld设置系统变量时出现权限拒绝(errno:13)的问题求助

Ubuntu 20.04下执行mysqld设置系统变量时出现权限拒绝(errno:13)的问题求助

看起来你遇到的是手动执行mysqld命令时的权限上下文不匹配问题——虽然MySQL服务本身能正常启动、处理请求,但直接手动启动mysqld进程时,没有匹配到系统服务运行时的权限配置,才触发了权限报错。

核心原因

在Ubuntu 20.04上,MySQL默认通过systemd服务管理,启动时会以mysql用户身份运行,同时Ubuntu的AppArmor安全模块会限制mysqld进程的访问路径和权限范围。而你直接执行mysqld命令时,哪怕用了sudo,进程的运行上下文和systemd管理的服务完全不一样,自然会触发权限限制,导致无法创建测试文件。

推荐解决方案(持久化修改)

不要手动执行mysqld来修改参数,正确的做法是修改MySQL配置文件并重启服务:

  1. 打开Ubuntu上MySQL的主配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  1. 在[mysqld]区块下添加或修改以下参数:
innodb_buffer_pool_size = 16G
innodb_buffer_pool_instances = 32
  1. 保存文件后,重启MySQL服务让配置生效:
sudo systemctl restart mysql
  1. 验证参数是否生效:登录MySQL命令行执行
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'innodb_buffer_pool_instances';

临时测试方案(不持久化)

如果你只是想临时测试这个参数(不想修改配置文件),可以先停止正在运行的MySQL服务,然后以mysql用户身份手动启动:

# 先停止systemd管理的MySQL服务
sudo systemctl stop mysql
# 以mysql用户身份启动mysqld并加载指定参数
sudo -u mysql mysqld --innodb-buffer-pool-size=16G --innodb-buffer-pool-instances=32

注意:这种方式启动的MySQL不会被systemd管理,关闭终端或者进程退出后服务就会停止,仅适合临时测试使用。

备注:内容来源于stack exchange,提问作者sedge99

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:33:05