![为什么符号链接在 MySQL 中不起作用?](https://linux22.com/image/523128/%E4%B8%BA%E4%BB%80%E4%B9%88%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%E5%9C%A8%20MySQL%20%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我遇到了一个问题,我搜索了很多,但不确定它是否与以前的安全补丁有关。在 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