ホームページ >データベース >mysql チュートリアル >LOAD DATA INFILE を使用すると MySQL がファイルにアクセスできないのはなぜですか?

LOAD DATA INFILE を使用すると MySQL がファイルにアクセスできないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 20:21:02633ブラウズ

Why Can't MySQL Access My File When Using LOAD DATA INFILE?

LOAD DATA INFILE エラー コード : 13

リモート サーバーで LOAD DATA INFILE コマンドを使用して MySQL テーブルにデータをロードしようとしたとき、エラー コード: 13: 「'/httpdocs/.../.../testFile.csv' の統計を取得できません (エラーコード: 2)」が発生する場合があります。これは、MySQL が指定されたファイルにアクセスできないことを示しています。

次の手順は、この問題の解決に役立ちます。

1.十分な権限を付与

データベース ユーザーがファイルにアクセスするための十分な権限を持っていることを確認します。ユーザーに SELECT、FILE、LOAD DATA 権限を付与することを検討してください:

GRANT SELECT, FILE, LOAD DATA ON *.* TO 'userName'@'%'

2.ファイルとフォルダーのアクセス許可を設定する

ファイルとフォルダーのアクセス許可が MySQL にファイルの読み取りを許可していることを確認します。ファイルのアクセス許可を 644 (rw-r--r--)、フォルダーのアクセス許可を 755 (rwxr-xr-x) に設定します。

<code class="bash">chmod 644 /httpdocs/.../.../testFile.csv
chmod 755 /httpdocs/.../.../</code>

3. Apparmor の設定を確認する

Ubuntu システムでは、Apparmor は MySQL のファイルへのアクセスを制限することができます。 MySQL が「tmp」ディレクトリからファイルを読み取れるようにするには、次の行を /etc/apparmor.d/usr.sbin.mysqld に追加します:

/tmp/** rwk

Reload Apparmor using:

<code class="bash">sudo /etc/init.d/apparmor reload</code>

4. SELinux を無効にする

SELinux (セキュリティ強化された Linux) を使用している場合は、ファイル アクセスも制限される可能性があります。一時的に無効にして、LOAD DATA INFILE コマンドを再実行してみてください。具体的な手順については、SELinux ドキュメントを参照してください。

追加メモ:

  • LOAD DATA INFILE ステートメントで指定されたファイル パスが正しく、MySQL からアクセスできることを確認してください。 .
  • 代わりに、mysqlimport や mysql.connector などのデータ インポート ツールを使用してデータをインポートすることを検討してください。

以上がLOAD DATA INFILE を使用すると MySQL がファイルにアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。