为啥我不能 cd 进入 /var/lib/mysql

Posted

技术标签:

【中文标题】为啥我不能 cd 进入 /var/lib/mysql【英文标题】:why I cannot cd into /var/lib/mysql为什么我不能 cd 进入 /var/lib/mysql 【发布时间】:2015-04-11 07:20:30 【问题描述】:

结构如下

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

这里有什么问题?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

mysql 组无权访问该目录。 mysql 用户的权限是rwx,但组和其他用户获得---,因此在mysql 组中并不能满足您的需求。

【讨论】:

我明白了,所以要 cd 进入它,我需要添加 mysql 组,或者 sudo -i 然后 cd mysql。您认为以前的安全解决方案是个坏主意吗? 从打包的角度来看,这可能是个坏主意——当你升级 mysql 时,它可能会在 /var/lib/mysql 上重新安装旧权限。【参考方案3】:

mysql 用户是唯一可以访问该目录的用户,可以使用root 访问并更改权限,也可以将目录权限更改为740

chmod 740 /var/lib/mysql

权限分为用户/组/其他三个部分。你有

drwx------

d= 目录

r= 读取 = 4

w=write = 2

x=执行 = 1

所以“所有者”在该目录中拥有 read(4) + write(2) + execute(1) = 7 权限

其他人都没有

【讨论】:

如果您希望其他人访问该目录,您应该使用 750 或 755。 740 足以让正确组的成员阅读直接目录列表,仅此而已。执行位在这里更重要。【参考方案4】:

根据给定的输入,很明显只有所有者mysql/var/lib/mysql 目录拥有read, write, execute 权限。

当前登录用户 - ravas 是 mysql 组的一部分。因此ravas 用户可以cd/var/lib/mysql 目录如果组mysqlx (ie execute) 具有x (ie execute) 权限@ 。

因此chmod g+rx /var/lib/mysqlchmod 750 /var/lib/mysql 将允许ravas 用户到cd/var/lib/mysql 并读取目录内容(即列表文件)

注意: x/Execute 对目录的权限允许cd 进入目录

【讨论】:

【参考方案5】:
sudo -i

然后

cd /var/lib/mysql/

【讨论】:

sudo -i 为我解决了这个问题,在 ubuntu 上,我在 sudo chown -R mysql:mysql ... 上运行了以下目录 这与权限有何关系?【参考方案6】:

每个文件和目录都有三个基于用户的权限组:

owner - Owner 权限仅适用于文件或目录的所有者,不会影响其他用户的操作。

- 组权限仅适用于已分配给文件或目录的组,不会影响其他用户的操作。

所有用户 - 所有用户权限适用于系统上的所有其他用户,这是您最想观看的权限组。

drwx----- 13 mysql mysql 4096 Feb 10 22:32 mysql

上面显示mysql文件夹的权限是700,所以mysql用户拥有所有的读、写和执行权限。 mysql 组没有权限。虽然,ravas 用户属于 mysql 组。没有权限。

【讨论】:

请编辑此答案以获得更好的清晰度。我目前无法关注它。

以上是关于为啥我不能 cd 进入 /var/lib/mysql的主要内容,如果未能解决你的问题,请参考以下文章

如何监控 MySQL 空间?

MySQL 日志管理

为啥我不能将文件从 Windows 中的 CD 拖放到 Eclipse / SWT Drop Target

CentOSLAMP相关4

为啥VMware虚拟机 不能启动虚拟硬盘的系统 问题

为啥shell脚本中不能执行cd 命令