【问题标题】:LOAD DATA (LOCAL) INFILE - Invalid authorization specificationLOAD DATA (LOCAL) INFILE - 无效的授权规范
【发布时间】:2016-10-25 15:21:39
【问题描述】:

我通过 FTP 将项目上传到 1and1 服务器。当网站转到将 csv 文件导入数据库表的函数时出现错误。

这是我的代码:

    $file = "/Contenu/BD/file.csv";

    $sql = "LOAD DATA INFILE '$file' INTO TABLE table CHARACTER SET UTF8 FIELDS TERMINATED BY \";\" LINES TERMINATED BY \"#\"";

当我使用“LOAD DATA INFILE”时,我有一条 SQL 错误提示:

" SQLSTATE[28000]: Invalid authorization specification: 
1045 Access denied for user xxxxxx (using password: YES) "

当我使用LOAD DATA LOCAL INFILE 时,我没有 SQL 错误,但集成不起作用。

所以我来找你了解我的文件导入发生了什么。此文件在我的开发环境中正确导入,在 localhost 中,但在生产服务器上不正确。

(整个数据库都在项目上工作,所以我认为我的 SQL 登录没有错误)

谢谢大家的回答。

【问题讨论】:

  • 这不是发生错误的代码。
  • 我现在知道我的 1and1 服务器是互用的,他们没有授权我使用 LOAD DATA INFILE 函数。
  • 我想使用 php 脚本 instrad 导入数据,但在我的 CSV 中,我使用“#”作为行分隔符,我不知道如何让 fgetcsv 知道这是他必须找到的分隔符......
  • 发布一个新问题。

标签: php mysql sql pdo


【解决方案1】:

查看GRANT FILE 权限,该权限可能因用户而异,从服务器到服务器。特别是如果在初始用户设置期间使用了通配符。或者我应该说,GRANT ALL ... 是在一台服务器上完成的,但不是在另一台服务器上完成的。

另请参阅名为 Security Issues with LOAD DATA LOCAL 的安全手册页。

并检查您的服务器设置:

show variables where variable_name='local_infile';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+

对于那些在托管环境中无法更改服务器级变量的情况,通常会执行以下操作:

  1. 找到文件的完整路径。这并不容易,并且可能导致文件在通向您的虚拟化目录的路径的前缀侧变得神秘。含义/some/path/to/you/home/shqnks
  2. 拥有 GRANT 的 FILE 权限部分
  3. 找出实际运行脚本的用户上下文。这可能有点远,但select user() 可以提供帮助。
  4. ssh 访问和 chmod 用于文件。示例here
  5. 有些人对LOCAL 很幸运,而另一些人则认为它很愚蠢,因为该文件已经在服务器上,并且本地将它放在临时目录中。可能对某些人有用的原因是,这样做可能会打开额外的文件级访问权限。

【讨论】:

  • 谢谢你的回答,我试着去做,我会回来找你的
  • 我做了“GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;”什么也没发生(我用实际的好值替换了 mydb 和 myuser) 我不知道在哪里显示这些变量。这是一个 1and1 服务器,我不知道去哪里写你的行“show variables where variable_name='local_infile';”
  • 我试图从 Phpmyadmin 面板授予所有权限,并且:MySQL 说:文档 #1044 - 用户 'xxx'@'%' 拒绝访问数据库 'xxx'
  • 我试图将你 ping 到 Campaigns 以试图解决关于 1and1 的问题。我无法联系他们获取备忘单,因为我与他们没有任何联系:contact.1and1.com/area
  • 我现在读了几次这个问题。现在通过 cmets 很明显,对于这种情况,使用主机而不是更改服务器变量不是解决方案(它会影响服务器上所有对等帐户的安全性并且它被锁定)。除了修补 ssh 连接来确定您的文件的full pathchmod 文件权限和select user() 来确定尝试导入的用户的身份验证/上下文之外,没有直接明显的解决方案。我很高兴为你做这件事,但你必须允许。如果有兴趣,请加入上面的聊天。
猜你喜欢
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多