2

我想在我的 linux mysql中使用D:\xampp\mysql\data中的数据库而不移动它。所以我可以在 linux 和 windows 上处理它们

这是我所做的:

# mount -t ntfs -o uid=mysql,gid=mysql,dmask=002,fmask=113 /dev/sda5 /media/public/
# cd /var/lib/mysql
# ln /media/public/xampp/mysql/data/my_db -s
# chown -R mysql:mysql /var/lib/mysql/my_db

但是mysql无法读取数据库表

use my_db
show tables

给出错误:mysql 无法读取目录 './my_db'

看来这是一个权限问题。我应该怎么办?

PS:只有一台机器有两个操作系统,Windows 和 Linux。我想使用与datadir我在 Windows 或 Linux 中时相同的目录。

PS:我试过了ntfs-3g。现在土墩分区和它的所有内容所有权是mysql:mysql. /var/lib/mysql/my_dbmysql:mysql也是。但我仍然收到以下错误show tables

错误 1018 (HY000): 无法读取 './my_db/' 的目录 (errorno: 13)

4

3 回答 3

2

首先,绝不允许多个 MySQL 实例同时使用数据文件。这是灾难的秘诀。

二、为什么两台机器都需要MySQL的服务器?为什么不直接使用 linux 机器上的客户端通过网络连接到 windows 机器上的服务器呢?

第三,如果你真的必须这样做,我建议在它们之间启用主-主复制。因此,每台服务器都有自己的存储,并会自动来回传达更改。

编辑

啊,等等……你是双启动吗?如果是这样,您需要确保用户/var/lib/mysql可以读取整个目录mysqlmy_db仅对文件夹 进行 chmod 是不够的。

哦,你是如何将挂载点链接到 MySQL 的数据目录的(这不在你的命令列表中)......

于 2010-08-19T17:07:21.010 回答
0
ls /media/public/xampp/mysql/data/my_db

好的,您是否将datadirmy.cnf 中的配置指向/media/public/xampp/mysql/data以便 MySQL 知道在哪里查找它?

回复:编辑:

ln /media/public/xampp/mysql/data/my_db -s

哦……你的意思是ln -s /media/public/xampp/mysql/data/my_db /var/lib/mysql/my_db

mount -t ntfs

ntfs为您提供内核 NTFS 文件系统支持,它是只读的。如果您希望能够写入文件,则需要ntfs-3g,假设它已安装(大多数现代发行版都这样做)。

于 2010-08-19T17:18:26.463 回答
0

您可能需要根据此博客文章将新数据目录添加到 /etc/apparmor.d/usr.sbin.mysqld 中的目录列表:http ://www.lucasward.net/2011/05/moving-mysql -data-directory-beware-of.html

像这样:

/new-mysql-datadir/ r,
/new-mysql-datadir/** rwk,

您可以通过查看 /var/log/messages 并查看是否有类似以下的错误消息来确认这是您的问题:

Aug  6 14:47:23 tinybeast kernel: [20254.145552] type=1400 audit(1344228443.102:54): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=24202 comm="apparmor_parser"
Aug  6 14:47:23 tinybeast kernel: [20254.165438] type=1400 audit(1344228443.122:55): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/mysqld" name="/media/data/mysqldata/tinybeast.lower-test" pid=24206 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Aug  6 14:47:23 tinybeast kernel: [20254.165718] type=1400 audit(1344228443.122:56): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/mysqld" name="/media/data/mysqldata/tinybeast.lower-test" pid=24206 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Aug  6 14:47:23 tinybeast kernel: [20254.167606] type=1400 audit(1344228443.126:57): apparmor="DENIED" operation="open" parent=1 profile="/usr/sbin/mysqld" name="/media/data/mysqldata/mysql/plugin.frm" pid=24206 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
Aug  6 14:47:23 tinybeast kernel: [20254.186759] type=1400 audit(1344228443.146:58): apparmor="DENIED" operation="open" parent=1 profile="/usr/sbin/mysqld" name="/media/data/mysqldata/ibdata1" pid=24206 comm="mysqld" requested_mask="rw" denied_mask="rw" fsuid=0 ouid=0

为了感谢我的消息来源,我从上述博客文章中学到了这一切,我只是在此处发布特定部分,以防文章链接过时。

于 2012-08-06T05:02:44.523 回答