类似的问题已经讨论了很多次,但我没有找到解决办法,在我的情况下。
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)如您所见,客户端和服务器位于同一台主机上。
此命令是我通常在同一模式上、在另一台服务器上运行的命令的副本/粘贴(Debian8.0上的MySQL 5.5.43 )。
尝试“加载数据本地INFILE”被拒绝。加上--当地的--婴儿不起作用。
以下是我的补助金:
mysql> show grants;
+--------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for dmeziere@localhost |
+--------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'dmeziere'@'localhost' IDENTIFIED BY PASSWORD '***' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------------------+
1 rows in set (0,00 sec)所以我应该有文件特权。无论如何,我也尝试使用mysql根默认帐户。
下面是文件perms:
$ ll /tmp/FR.csv
-rwxrwxrwx 1 dmeziere dmeziere 6,2M mai 25 13:08 /tmp/FR.csv所以这个文件是存在的并且是可以访问的。正如您想象的那样,我试图将文件从更深的路径移动到限制错误,并在寻找线索的同时给予它完全的权限。/tmp上的根茎是根。我也尝试过sudo mysql。
两种系统都不使用SE。
最后,我将SELECTed *放在表上,以确保它仍然是空的,以消除错误的负错误。
一个主意?
发布于 2016-06-06 08:09:49
最后,这不是文件系统问题。是MySQL拒绝读取CSV文件,不管权限如何。将CSV文件放入MySQL数据目录(通常是/var/lib/mysql)完成了他的工作。这一安全特性似乎并不存在于MySQL和OSes的每一种口味中。
当然,您不应该忘记在导入后删除该文件。
我觉得这种行为有点奇怪。我真的不明白为什么导入CSV文件比导入DQL文件更困难。
发布于 2019-05-10 14:31:02
试试这个:
service apparmor stop
service apparmor teardown我遇到了同样的问题,并通过以下命令修复了它。
https://stackoverflow.com/questions/37436145
复制相似问题