![Ubuntu 下挂载的 Windows 分区中的 MySQL 数据文件夹不被 MySQL 接受](https://linux22.com/image/544141/Ubuntu%20%E4%B8%8B%E6%8C%82%E8%BD%BD%E7%9A%84%20Windows%20%E5%88%86%E5%8C%BA%E4%B8%AD%E7%9A%84%20MySQL%20%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%8D%E8%A2%AB%20MySQL%20%E6%8E%A5%E5%8F%97.png)
我正在尝试在 Ubuntu 10.10 下安装我的 Windows ntfs 分区,其中包含 MySQL 数据文件夹(来自 Windows)在 /media/mysql/data 中。在我的 Windows 中,我安装了 Sokkit(PHP+Apache+MySQL)。在我的 Ubuntu 中,我安装了 Xampp,并且在 my.cnf 中,我已将数据目录指向 /media/mysql/data。现在,当我尝试启动 Xampp 服务时,MySQL 无法启动。
你能告诉我可能的原因是什么吗?
我正在使用以下挂载命令。
挂载-t ntfs-o默认值,no_root_squash /dev/sda1 /media/
除了安装分区之外,还有其他方法可以访问我的 Windows 分区吗?
答案1
一般来说,这不是一个好主意。数据库软件需要严格控制它们使用的文件(原因很明显)。如果你将数据库文件放在 Linux 上的 NTFS 上,那你就自找麻烦了。
Linux 上对 NTFS 的写入支持(据我所知)仍处于试验阶段。我不知道此组合下文件锁定的表现如何。
我的建议是使用mysqldump
或类似的东西从 Windows 导出数据库,然后使用该转储在 Linux 端重建数据库 - 使用本机文件系统上的数据(ext、xfs、reiserfs ......无论您认为最好的是什么)。
答案2
几天来我一直在努力解决相同(或类似?)的问题,对我来说,我找到了一个解决方案:
问题:
无论出于什么原因,mysql 都需要其数据库由用户“mysql”拥有(/etc/mysql/my.cnf 提供了一个“用户”选项,但将其更改为已安装的 ntfs 分区的所有者并没有改变任何东西)
解决方案:
a) 直接:以用户“mysql”身份挂载 ntfs 分区 - 我的 /etc/fstab 如下所示:
/dev/sda5 /mnt/ntfsmount/ ntfs rw,user,auto,umask=0002,uid=121,gid=113
其中 uid=121 是“mysql”的用户 id,gid=113 是“mysql”的组 id(根据需要采用!)
这对我来说并不令人满意,因为分区保存的数据比一些 mysql 数据库要多得多
b) 建议:使用任意权限和选项挂载 ntfs 分区并将 mysql 数据“绑定”到单独的挂载点(参见上面的示例 - uid 和 gid 选项除外):
接下来你需要安装“bindfs”
sudo apt-get install bindfs
现在,你的 ntfs-partion 已经挂载,bindfs 也已经安装完毕,你需要添加类似
bindfs#/mnt/ntfsmount/mysql /mnt/mysql fuse owner=mysql,group=mysql,perms=755 0 0
到您的 /etc/fstab。这将默认将具有适当所有权和权限的 mysql 数据库挂载到指定目录。现在您的 /etc/mysql/my.cnf 需要指向“/mnt/mysql/data”,并且您的 mysql 数据库应该在下次重新启动后可访问(或挂载 /mnt/mysql 并重新启动 mysql 服务)
注释:
我已经在 Kubuntu 11.04 上尝试过这个问题,但我认为这是一个更普遍的问题,应该适用于各种版本的类 Debian 系统。
在找到此解决方案之前,我在网上搜索了一下,找到了停用/卸载“apparmor”的建议。我不确定这是否与解决方案相关b)如上所述,但我提前这样做了。因此,如果b)没有按预期工作,您可能需要卸载 apparmor。
sudo apt-get remove apparmor
--
我希望这对你们中的一些人有帮助!
问候,路德维希