为什么我不能 cd 进 /var/lib/mysql?

20

结构如下

ravas@ravas-desk-lmde /var/lib $ pwd
/var/lib
ravas@ravas-desk-lmde /var/lib $ ls -l | grep mysql
drwx------ 13 mysql   mysql   4096 Feb 10 22:32 mysql

当我尝试进入 /var/lib/mysql 目录时,我没有权限。

ravas@ravas-desk-lmde /var/lib $ cd mysql/
bash: cd: mysql/: Permission denied

虽然我属于mysql组

ravas@ravas-desk-lmde /var/lib $ groups ravas 
ravas : ravas adm dialout cdrom floppy sudo audio dip video plugdev lpadmin sambashare mysql

这里有什么问题吗?

6个回答

62
sudo -i

然后

cd /var/lib/mysql/

1
在Ubuntu上,我遇到了一个问题,但是通过运行sudo -i命令解决了它。然后我在一个目录上运行了以下命令:sudo chown -R mysql:mysql ... - Chad Cache
这与权限有什么关系? - Enerccio

4

MySQL用户是唯一能够访问该目录的用户,您可以使用root用户来访问并更改权限,或者将目录权限更改为740,命令如下:

chmod 740 /var/lib/mysql

权限被分为3个部分:用户/组/其他。您可以根据需要更改权限。

drwx------

d= 目录

r= 读取 = 4

w=写入 = 2

x=执行 = 1

因此,“所有者”在该目录中具有读取(4)+写入(2)+执行(1)= 7个权限

其他人没有这些权限。


如果你想让其他人访问目录,你应该使用750或755。740足以让正确组的成员读取即时目录列表,但不会更多。这里执行位更重要。 - Score_Under

3

mysql 组没有访问该目录的权限。对于 mysql 用户的权限为 rwx,但组和其他用户只有 --- 权限,因此加入 mysql 组并不能得到你想要的权限。


我明白了,所以要进入它,我需要添加mysql组,或者sudo -i然后cd mysql。你认为前一种解决方案在安全方面是否不好? - user3889486
从打包的角度来看,这可能是一个不好的想法 - 当您升级mysql时,它可能会重新安装/var/lib/mysql上的旧特权。 - viraptor

1

mysql 组没有目录权限,只有 mysql 用户有。


1
从给定的输入中可以清楚地看出,只有所有者mysql对/var/lib/mysql目录具有读取、写入、执行权限。 而当前登录用户ravas是mysql组的一部分。因此,如果组mysql在/var/lib/mysql上具有x(即执行)权限,则ravas用户可以cd到/var/lib/mysql目录。 因此,chmod g+rx /var/lib/mysql或chmod 750 /var/lib/mysql将允许ravas用户cd到/var/lib/mysql并读取目录内容(即列出文件)。 注意:对目录的x/Execute权限允许cd到目录。

1
每个文件和目录都有三个基于用户的权限组:
所有者 - 所有者权限仅适用于文件或目录的所有者,不会影响其他用户的操作。
组 - 组权限仅适用于被分配到文件或目录的组,不会影响其他用户的操作。
所有用户 - 所有其他系统用户的权限均适用于此权限组,这是您最需要关注的权限组。
上面显示mysql文件夹权限为700,因此mysql用户拥有所有读取、写入和执行权限。mysql组没有任何权限。尽管ravas用户属于mysql组,但没有权限。

请修改这个答案以使其更加清晰,我目前无法理解它。 - NelsonGon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接