将 MySQL 数据库存储在 USB 中..权限问题 (errno: 13)?

将 MySQL 数据库存储在 USB 中..权限问题 (errno: 13)?

因此,这个页面就是我用作手册的:

MySQL 数据库的位置不同吗?

我正在尝试将数据库存储在 USB 上(不管这是否是个好主意,如果有办法的话请告诉我如何做)。mysql 可以使用链接到计算机上另一个文件夹的软链接正常工作。当然,该文件夹的所有权会随 而改变chown -R mysql:mysql /file

使用 USB 执行此操作时遇到的第一个问题是,当当前目录位于 USB 中时,我无法使用chown。我的 USB 的文件系统是 vfat。我从研究中了解到,“vfat”或“fat32”文件系统不支持安全性。并且 USB 中的文件可能具有“不可变”属性。我无法使用lsattrnorchattr检查它们是否不可变或消除不可变标签。

我手动挂载了 USB,以便其“uid”和“gid”为“mysql”。我运行id -u mysqlid -g mysql,结果显示分别为 116 和 125。然后我sudo mount -t vfat /dev/sdb1 /media/external -o uid=116,gid=125,utf8,dmask=007,fmask=117挂载了我的 USB。当我lsblk执行时,它就被挂载了。我对 USB 中的所有内容都是 mysql:mysql 这一事实感到有点不舒服,但我找不到如何为同一 USB 中的文件夹设置不同的所有者。

用过的https://help.ubuntu.com/community/Mount/USB本手册仅供参考。

因此,完成此操作后,当我在 USB 中执行 ls -l 时,它会显示 mysql:mysql。

在这样做之前,当执行时show databases,我认为我在下面建立的软链接/var/lib/mysql/不会出现,但现在它出现了。

现在,问题是,当我执行show tablescreate tables选择数据库(软链接)后,它会出现:

ERROR 1018 (HY000): Can't read dir of './Muniverse/' (errno: 13)

我不知道接下来该做什么。

当我搜索“mysql errno: 13”时,所有解决方案都建议chown -R mysql:mysql(或 mysql.mysql),我认为这已经完成了,因为当我ls -l在 USB 中时,似乎所有者和组是“mysql”。

也许它只是看起来如此?或者这不起作用是因为文件是“不可变的”?

但是,参考man manual,存在默认未设置的“sys_immutable”选项。

我在做什么或者我做错了什么?

注意:所以,基本上,我可以使计算机上的文件夹的软链接在 mysql 中工作,但不能在 USB 上工作。

===========================

仅供参考,对于那些像我一样对 Linux 不熟悉的人来说,我能够在 LINUX 上将 USB 格式化为 ext4。我的 Windows 10 计算机没有“ext4”选项。我认为有用的证据是,当我这样做时lsattr,它现在会打印属性和内容。

关联:为 ubuntu ext4 格式化 USB 闪存

答案1

在 USB 上使用 EXT。无论如何,您都不会在 Linux 之外使用 MySQL 数据库,因此请使用本机文件系统。这将解决您遇到的所有权限问题。errno 13 是权限错误,很可能与您的文件系统有关。

使用 EXT 时,“ln -s” 也有效。它是一个 Linux 命令,因此不适用于 Microsoft 文件系统。

但是,将 USB 用于数据库是一个非常糟糕的主意。磨损均衡这将是严重的问题。您最好将数据库放在系统上的单独分区上,然后将该分区复制到 USB,然后在另一台可以使用新数据库的机器上恢复数据。

相关内容