MySQL CSV导入权限被拒绝

时间:2016-05-25 11:44:26

标签: mysql

已经多次讨论过类似的问题,但我发现在我的案例中没有解决方案。

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 dmeziere@localhost                                                                                                              |
+--------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'dmeziere'@'localhost' IDENTIFIED BY PASSWORD '***' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------------------+
1 rows in set (0,00 sec)

所以我应该拥有FILE权限。无论如何,我还尝试使用mysql root默认帐户。

以下是文件烫发:

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

因此该文件存在且可访问。正如您想象的那样,我尝试从更深的路径移动文件以限制错误,并在尝试查找线索时为其提供完全权限。 / tmp上的perms是drwxrwxrwt root root。我也尝试过sudo mysql。

两个系统都不使用SE Linux。

最后,我在桌面上选择*以确保它仍为空,以消除误报。

一个想法?

2 个答案:

答案 0 :(得分:1)

最后,它不是一个文件系统问题。无论权限如何,MySQL都拒绝读取CSV文件。将CSV文件放在MySQL数据目录(通常是/ var / lib / mysql)中就可以了。这种安全功能似乎并不存在于各种MySQL和操作系统中。

当然,您不应该忘记在导入后删除文件。

我发现这种行为有点好奇。我真的不明白为什么导入CSV文件应该比导入DQL文件更难。

答案 1 :(得分:0)

尝试一下:

service apparmor stop
service apparmor teardown

我遇到了相同的问题,并通过这些命令对其进行了解决。