在Ubuntu下安装的Windows分区中的MySQL数据文件夹不被MySQL接受

我试图挂载我的windows ntfs分区在Ubuntu 10.10包含MySQL数据文件夹(从Windows)在/media/mysql/data。在我的Windows我已经安装了Sokkit(PHP + Apache + MySQL)。 在我的Ubuntu中,我已经安装Xampp,并在my.cnf我指出datadir / media / mysql / data。 现在,当我尝试启动Xampp服务时,MySQL无法启动。

你能告诉我可能的原因是什么?

我正在使用下面的装载命令。

mount -t ntfs -o defaults,no_root_squash / dev / sda1 / media /

有没有其他方式来访问我的Windows分区除了安装分区?

一般来说这是一个坏主意。 数据库软件需要严格控制他们使用的文件(原因很明显)。 如果你把你的数据库文件放在Linux上的NTFS上,那么你就会遇到麻烦。

在Linux上编写对NTFS的支持(afaik)还是相当实验性的。 我不知道这个组合有多好的文件locking。

我的build议是使用mysqldump或类似的东西从窗口导出数据库,并使用该转储在Linux端重build数据库 – 本地文件系统上的数据(ext,xfs,reiserfs,…无论你感觉如何最好)。

我一直在努力与相同的(或类似的?)几天的问题,对我来说,我find了一个解决scheme:

  1. 问题:

    无论出于何种原因,mysql需要将其数据库归“mysql”用户所有(/etc/mysql/my.cnf提供了“user”选项,但将其更改为挂载的NTFS分区的所有者并没有任何改变)

  2. 解决scheme:

    a)直接:用户“mysql”挂载ntfs分区 – 我的/ etc / fstab看起来像:

     /dev/sda5 /mnt/ntfsmount/ ntfs rw,user,auto,umask=0002,uid=121,gid=113 

    其中uid = 121是“mysql”的用户标识,gid = 113是“mysql”的组标识(根据需要采用!

    这并不令人满意,因为分区比仅有一些mysql数据库拥有更多的数据

    b)build议:使用任意权限和选项安装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服务)

  3. 注释:

    我已经在Kubuntu 11.04上试了这个,但是我认为这是一个比较普遍的问题,应该和debian-like系统的各种版本一起工作。

    在我制定这个解决scheme之前,我在网上search了一个关于去激活/卸载“apparmor”的build议。 我不确定这是否与上述解决schemeb)相关,但是我提前做了这个。 所以,如果b)不能按预期工作,您可能需要卸载apparmor。

     sudo apt-get remove apparmor 

我希望这会对你们中的一些人有帮助!

问候,路德维希