我正在尝试为mysql(5.1.54)全文索引设置自己的stopword列表,但遇到了配置问题。我尝试了以下步骤:
我确实在/etc/mysql/my.cnf中通过添加以下行设置了系统变量:

ft_stopword_file = "/home/buli/stopwords.txt"

我创建了文件/home/buli/stopwords.txt,其中包含应该忽略的单词
现在,当我使用sudo service mysql restart重新启动mysql时,在/var/log/mysql/error.log中有一个条目说:
/usr/sbin/mysqld: File '/home/buli/stopwords.txt' not found (Errcode: 13)
111218 19:07:18 [Note] Event Scheduler: Loaded 0 events
111218 19:07:18 [Note] /usr/sbin/mysqld: ready for connections.

运行perror 13会将其翻译为权限拒绝问题。然而,该文件存在,我甚至给出了它的完全权限:
    $ ls -l /home/buli/stopwords.txt
    -rwxrwxrwx 1 buli buli 6 2011-12-18 18:41 /home/buli/stopwords.txt

发生此错误是否有其他特定于mysql的原因(因为文件权限似乎是可以的)?

最佳答案

你是在一个使用apparmor、chroot等来保护它的发行版上运行mysql吗?
对于apparmor,您必须更新/etc/apparmor.d/usr.sbin.mysqld(或类似文件),对于chroot,您必须复制文件。
最好的方法是将stopword文件放在数据目录下,并且只给出一个真实的路径。

09-30 11:30