我在删除 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 镜像,所以嘿... 你选择。