MySQL / Linux:自定义停用词文件 - 权限被拒绝

时间:2011-12-18 18:37:42

标签: mysql linux permissions full-text-search

我正在尝试为MySQL(5.1.54)全文索引设置自己的停用词列表,但遇到配置问题。我尝试了以下步骤:

  1. 我通过添加行在 /etc/mysql/my.cnf 中设置了系统变量:

    ft_stopword_file = "/home/buli/stopwords.txt"
    
  2. 我创建了文件 /home/buli/stopwords.txt ,其中包含应忽略的字词
  3. 现在,当我使用 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.
    
  4. 运行 perror 13 会将其翻译为权限被拒绝问题。但该文件存在,我甚至给它完全权限:

        $ ls -l /home/buli/stopwords.txt
        -rwxrwxrwx 1 buli buli 6 2011-12-18 18:41 /home/buli/stopwords.txt
    

    是否有任何其他特定于mysql的原因导致此错误发生(因为文件权限似乎没问题)?

3 个答案:

答案 0 :(得分:2)

您是否在使用AppArmor,chroot等来保护它的发行版上运行MySQL?

对于AppArmor,您必须更新/etc/apparmor.d/usr.sbin.mysqld(或类似),对于chroot,您必须复制该文件。

最好的办法是将停用词文件放在数据目录下面,并仅提供一个实际路径。

答案 1 :(得分:0)

一:永远不会给任何文件777权利

二:问题当然是运行MySQL的用户无法进入/home/buli。如果需要访问文件,则必须至少具有通向该文件的所有目录的执行权限(是的,甚至不需要读取权限)。

答案 2 :(得分:0)

Step 1. Search my.cnf or my.ini
# whereis my.cnf
or
#mysql --verbose --help | less

Step 2. Edit my.cnf file
#sudo vim /etc/my.cnf

# Add stop word file and file should be exist
ft_stopword_file="/usr/mysql/stop_words.txt"  ## You can give any path where you put your stop file

Step 3-> Restart mysql
#sudo service mysqld  restart

Step 3-> Login my sql
#mysql -u root -p
mysql -> use mydatabase_name;

mysql-> show variables like 'ft_%';

Variable_name            | Value

ft_stopword_file      /usr/mysql/stop_words.txt`enter code here`

Step -> 5 :- Repair full-test table file

 REPAIR TABLE tablename QUICK

mysql-> REPAIR TABLE products QUICK;