2011-12-18 10 views
1

ストップワードリストをMySQL(5.1.54)フルテキストインデックスに設定しようとしましたが、設定に問題があります。MySQL/Linux:カスタムストップワードファイル - 許可が拒否されました

私はファイルを作成し
ft_stopword_file = "/home/buli/stopwords.txt" 
  • /ホーム/ BuLiを/ストップワード:私は追加の線で /etc/mysql/my.cnf でシステム変数を設定しなかった

    1. :私は、次の手順を試してみました私はsudoのサービスMySQLの再起動を使用してMySQLを再起動したときに
    2. を無視する必要がある言葉での.txt今/var/log/mysql/error.lo内のエントリがありますグラム言って:

      /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. 
      

    許可が問題を拒否されたとして、それを翻訳し 13 PERRORを実行します。ファイルは、しかし存在し、私もそれを完全な権限を与えた:(ファイルのパーミッションはOKらしいとして)

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

    は、このエラーが発生するため、他の、MySQL固有の理由はありませんか?

  • +0

    '/ home/buli'についてはどうですか?それは誰かのホームディレクトリのように見えますので、おそらくデフォルトではパブリックではありません。 –

    +0

    mysqlユーザーがホームディレクトリに読み込めません。デフォルトでは、ホームディレクトリは一般に0700です。ファイルを/ opt、/ usr/local、/ etcなどのよりパブリックな場所に移動します。 – lucifurious

    答えて

    2

    AppArmor、chrootなどを使用してディストリビューションを保護しているディストリビューションでMySQLを実行していますか?

    AppArmorの場合、/etc/apparmor.d/usr.sbin.mysqld(またはこれに類するもの)を更新する必要があります。chrootの場合、ファイルをコピーする必要があります。

    ストップワードファイルをデータディレクトリの下に置き、リアルタイブパスのみを指定することをお勧めします。

    +1

    これはそのようなケースです!ファイルに定義されているディレクトリの1つにストップワードファイルを置くと、エラーなしにMySQLがロードされました。私はAppArmorについても知らなかった。迅速な返信をありがとう! –

    0

    1つ:ファイルに権利がありません777権利はです。

    2つ:問題は、MySQLを実行しているユーザーが/home/buliを入力できないことです。ファイルにアクセスする必要がある場合は、少なくともそのファイルにつながるすべてのディレクトリに対して実行権限を持っている必要があります(はい、読み取り権限も必要ありません)。

    +0

    私は間違いなくもっと慎重にUNIXのアクセス許可を見ています:)しかし、この時点ではファイルをアクセスしやすいディレクトリに移動しても、AppArmorの再構成はできませんでした。返信ありがとう! –

    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; 
    
    関連する問題