对于MySQL中的加载数据infile,访问被拒绝

Bri*_*ian 100 mysql load-data-infile mysql-error-1045

我一直在PHP中使用MySQL查询,但是当我尝试LOAD DATA INFILE时,我得到以下错误#1045 - Access denied for user 'user'@'localhost' (using password: YES) 有谁知道这意味着什么?

jer*_*ome 183

我也遇到了这个问题.我不得不在我的SQL语句中添加"LOCAL".

例如,这会产生权限问题:
LOAD DATA INFILE '{$file}' INTO TABLE {$table}

将"LOCAL"添加到您的语句中,权限问题应该消失.像这样:
LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table}

  • 这是另一回事.它将您的文件上传到临时目录中的服务器.这有时是必要的,但如果infile已经在MySQL服务器上,那么你只是在做多余的工作. (10认同)
  • 您可能还必须使用`--local-infile`选项调用mysql. (4认同)
  • 对我来说,@ jeremysawesome会产生以下错误:错误代码:1148此MySQL版本不允许使用的命令。我尝试了一些针对此问题的答案,例如将mysql文件修改为local-infile = 1,但同样失败。 (2认同)

Yam*_*ion 29

我有这个问题.我四处搜寻,没有找到满意的答案.我在下面总结了我的搜索结果.

访问被拒绝错误可能意味着:

  • 'user'@'localhost'没有FILE权限(GRANT FILE on *.* to user@'localhost'); 要么,
  • 您正在尝试加载的文件在运行mysql服务器的计算机上不存在(如果使用LOAD DATA INFILE); 要么,
  • 您尝试加载的文件在本地计算机上不存在(如果使用LOAD DATA LOCAL INFILE); 要么,
  • 您尝试加载的文件不是世界可读的(您需要文件所有父目录是世界可读的:chmod 755目录;以及,chmod 744 file.dat)

  • @JAL我认为你的意思是"授予用户......*.**给用户......" - 可能是星号字符被剥离了 (3认同)
  • 用户 Tatiana 指出您不能为每个数据库授予 FILE 权限,而只能为整个服务器授予 FILE 权限。授予命令将是“将 *.* 上的文件授予用户@'localhost'(由'密码'识别)”; (2认同)

小智 18

尝试使用此命令:

load data local infile 'home/data.txt' into table customer;
Run Code Online (Sandbox Code Playgroud)

这应该工作.它适用于我的情况.

  • `ERROR 1148(42000):此MySQL版本不允许使用命令 (3认同)

tan*_*kay 9

确保您的MySQL用户具有FILE权限.

如果您使用的是共享虚拟主机,则托管服务提供商可能会阻止此操作.


小智 7

如果您正在 MySQL Workbench 上尝试此操作,

转到连接 -> 编辑连接 -> 选择高级选项卡

并添加OPT_LOCAL_INFILE=1到“其他”文本字段中。

现在重新启动连接并尝试。

在此输入图像描述


Dav*_*ant -6

这可能意味着您提供的密码'user'@'localhost'不正确。