2016-05-25 5 views
-1

同様の問題が何度も議論されていましたが、私の場合は解決策が見つかりませんでした。MySQL CSVのインポート権限が拒否された

MySQLバージョン:

$ mysql --version 
mysql Ver 14.14 Distrib 5.6.30, for debian-linux-gnu (x86_64) using EditLine wrapper 

のUbuntu 15.10 64ビットのデスクトップ。ご覧のように、クライアントとサーバが同じホスト上にある

$ mysql -u dmeziere -p -e "LOAD DATA INFILE '/tmp/FR.csv' INTO TABLE project_dev.cities CHARACTER SET 'UTF8' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 0 ROWS (country_code, country_name, postal_code, place_name, admin_name1, admin_code1, admin_name2, admin_code2, admin_name3, admin_code3, latitude, longitude, accuracy);" 
Enter password: 
ERROR 29 (HY000) at line 1: File '/tmp/FR.csv' not found (Errcode: 13 - Permission denied) 

:ここ

は私が実行しようとするコマンドです。

このコマンドは、通常、別のサーバ(Debian 8.0のMySQL 5.5.43)の同じスキーマで実行されるもののコピー/ペーストです。

「LOAD DATA LOCAL INFILE」を試行しています。 --local-infileを追加しても機能しません。ここで

は私の助成金です:

mysql> show grants; 
+--------------------------------------------------------------------------------------------------------------------------------------------+ 
| Grants for [email protected]                            | 
+--------------------------------------------------------------------------------------------------------------------------------------------+ 
| GRANT ALL PRIVILEGES ON *.* TO 'dmeziere'@'localhost' IDENTIFIED BY PASSWORD '***' WITH GRANT OPTION | 
+--------------------------------------------------------------------------------------------------------------------------------------------+ 
1 rows in set (0,00 sec) 

だから私はFILE権限を持つ必要があります。とにかく、私もmysqlのルートのデフォルトアカウントを試してみました。だから、ファイルが存在し、アクセス可能である

$ ll /tmp/FR.csv 
-rwxrwxrwx 1 dmeziere dmeziere 6,2M mai 25 13:08 /tmp/FR.csv 

は、ここでファイル権限あります。あなたが想像しているように、エラーを制限するためにファイルを深いパスから移動しようとしましたが、手がかりを見つけようとしている間に完全なアクセス許可を与えました。/tmp上のPermsは、drwxrwxrwtのルート・ルートです。私もmysqlをsudoしようとしました。

どちらのシステムもSE Linuxを使用していません。

最後に、偽のバグを排除するために、まだ空であることを確認するためにテーブルを*選択しました。

アイデア?

+0

ファイルをmysql binディレクトリに保存し、上記のクエリでそのファイルパスを指定します。 これはうまくいくはずです。 – Priyanshu

答えて

0

最後に、ファイルシステムの問題ではありませんでした。特権に関係なく、CSVファイルの読み込みを拒否したのはMySQLです。 CSVファイルをMySQLのデータディレクトリ(通常は/ var/lib/mysql)に置くことは彼の仕事でした。このセキュリティ機能は、MySQLやOSのあらゆる種類に存在するとは思われません。

もちろん、インポート後にファイルを削除することを忘れないでください。

私はこの動作が少し不思議です。 CSVファイルの読み込みがDQLファイルの読み込みよりも難しいのはなぜか分かりません。

関連する問題