为什么符号链接在 MySQL 中不起作用?

为什么符号链接在 MySQL 中不起作用?

我遇到了一个问题,我搜索了很多,但不确定它是否与以前的安全补丁有关。在 Debian Lenny 上的最新版本的 MySQL(5.0.51a-24)上,我需要在两个数据库之间共享一个表,这两个数据库位于同一路径(/var/lib/mysql/db1 & db2)。我为 db2 创建了指向 db1 中表的符号链接。

当我从 db2 查询同一张表时,我收到此信息:“错误 1030 (HY000):存储引擎出现错误 140”

它看起来是这样的:

test-lan:/var/lib/mysql/test3# ls -alh
drwx------ 2 mysql mysql 4.0K 2010-08-30 13:28 .
drwxr-xr-x 6 mysql mysql 4.0K 2010-08-30 13:29 ..
lrwxrwxrwx 1 mysql mysql 28 2010-08-30 13:28 blbl.frm -> /var/lib/mysql/test/blbl.frm
lrwxrwxrwx 1 mysql mysql 28 2010-08-30 13:28 blbl.MYD -> /var/lib/mysql/test/blbl.MYD
lrwxrwxrwx 1 mysql mysql 28 2010-08-30 13:28 blbl.MYI -> /var/lib/mysql/test/blbl.MYI
-rw-rw---- 1 mysql mysql 65 2010-08-30 13:24 db.opt 

我确实需要这些符号链接,有没有办法让它们像以前一样工作?(旧的 MySQL 服务器就可以)

答案1

这种行为不再受支持。

参考 CVE-2008-2079:http://bugs.mysql.com/bug.php?id=32167

答案2

我认为错误 140 是权限问题 - /var/lib/mysql/test 中的权限是什么?它们也需要是 mysql:mysql。

您还遇到一个问题,即数据库最终会出现锁定问题 - 您对这些表使用了什么数据库引擎?

答案3

是否可以将此共享表拆分到第三个数据库,并让两个程序都可以访问它?从长远来看,这可能是您维护成本最低的选项。

答案4

不要使用符号链接;使用硬链接。对于操作系统来说,它看起来就像一个普通文件,因此对于 MySQL 来说也是如此。它基本上是一个在文件系统中有两个条目的文件,而不是通常的一个条目。

ln old_file new_file

相关内容