【问题标题】:MySQL/Linux: Custom stopword file - permission deniedMySQL/Linux:自定义停用词文件 - 权限被拒绝
【发布时间】:2023-03-10 07:24:02
【问题描述】:

我正在尝试为 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.
    

运行 perror 13 将其翻译为 permission denied 问题。然而该文件是存在的,我什至给了它完全的权限:

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

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

【问题讨论】:

  • /home/buli 怎么样?它看起来像某人的主目录,因此默认情况下它可能不公开。
  • mysql 用户无法读取您的主目录。默认情况下,主目录通常为 0700。将文件移动到更公开的位置,例如 /opt、/usr/local 或 /etc。

标签: mysql linux permissions full-text-search


【解决方案1】:

一:永远不要向 777 授予任何文件的权利

二:问题肯定是运行MySQL的用户不能输入/home/buli。如果你需要访问一个文件,你还必须至少拥有指向该文件的所有目录的执行权限(是的,甚至不需要读取权限)。

【讨论】:

  • 我肯定会更仔细地研究 unix 权限 :) 将文件移动到更易于访问的目录但这次并没有解决问题,AppArmor 重新配置解决了问题。感谢您的回复!
【解决方案2】:

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

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

最好的办法是把停用词文件放在数据目录下面,只给出一个真实的路径。

【讨论】:

  • 好像是这样!将停用词文件放入文件中定义的目录之一使 MySQL 加载没有错误。我什至不知道 AppArmor。感谢您的快速回复!
【解决方案3】:
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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-27
    • 2021-05-03
    • 2011-07-29
    • 2022-01-08
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多