如何从 Docker 镜像中删除仅显示问号权限的文件

如何从 Docker 镜像中删除仅显示问号权限的文件

我在删除 Docker 镜像上的文件时遇到问题。我试图删除该文件db.opt,但收到一条消息,提示该文件不存在,并且我看到它的权限为问号。我该如何强制删除该文件?

[root@0c68ac3b27ec mod_hpcdb]# ll
total 4

-rwxrwxrwx 1 root root 65 May 2 07:28 db.opt

[root@0c68ac3b27ec mod_hpcdb]# rm -rf db.opt
[root@0c68ac3b27ec mod_hpcdb]# ll

ls: cannot access db.opt: No such file or directory

total 0 ?????????? ? ? ? ? ? db.opt

答案1

通常,如果权限和所有权存在类似问题标记,则意味着权限高于当前用户的默认权限。这意味着您应该使用sudo如下方法通过超级用户访问权限强制删除文件:

sudo rm -rf db.opt

但在这种情况下,您似乎已经以 root 身份登录。所以我猜这db.opt与某个正在运行的进程有关。可能是 MySQL?如解释的那样在此文章中

如果你在尝试删除 MySQL 数据库时收到此错误消息,请说我的数据库那么原因是文件权限(错误代码 13)。

mysql/var/每当我们创建一个数据库时,就会在(XAMPP :)下创建一个与数据库XAMPP/xamppfiles/mysql/var/同名的目录,该目录包含一个名为的文件,db.opt其中包含与数据库相关的元数据。

因此,问题实际上并不是删除db.opt父目录的权限,而是以某种方式阻止 MySQL 删除它自己的表。

我建议停止 MySQL 服务,检查父目录的所有权和权限,并使它们符合 MySQL 的要求和需求。如果不匹配,则只需chmod 777在父目录上运行,重新启动 MySQL,然后在DROP DATABASE <database_name>要删除的数据库上运行,一切应该会恢复正常。

我个人也建议你重新安装 MySQL,以确保权限已修复。但了解 Docker continuers 的工作原理后,可能意味着销毁并重建 Docker 镜像,所以嘿... 你选择。

相关内容