我有一个目录 /var/www/someProject/backup/mysql,我想让用户 mysql 写入该目录。每次我尝试使用 mysql 用户写入该目录时,都会收到“无法读取/写入”错误。然而,正如您在此处看到的,目录的权限是 777:
drwxrwxrwx 2 aUser users 4096 2010-03-17 17:14 mysql
我也尝试将目录 chown 为 mysql:mysql,就像 mysql 用户的主目录一样,但是没有运气,什么都没有改变。
我在这里做错了什么?还是 mysql 用户在 Ubuntu 中以其他方式被限制在其主目录中?这个问题已经困扰了我好几天了,所以非常感谢任何帮助。
答案1
您需要确保 mysql 用户能够真正进入 /var/www/someProject/backup/mysql 目录,即他必须在所有父目录上至少拥有“x”权限。
另外,请确保错误不是由您的 SELinux 设置引起的(如果您正在使用 SELinux)。
答案2
在 Dominik 的帮助下,我发现 Ubuntu 正在运行 apparmor。我引用维基百科:
AppArmor 允许系统管理员为每个程序关联一个安全配置文件,以限制该程序的功能
果然,这些程序中就有 mysqld。所以问题不在于用户,而在于 apparmor 对进程施加的限制。然后我找到了解决方案这里
sudo touch /etc/apparmod.d/disable/usr.sbin.mysqld
sudo /etc/init.d/apparmor reload
这使得 mysqld 成为一个免费进程,对我来说,在该服务器上没有问题。因此,经过几天的搜索,问题解决了!