【问题标题】:Minimum database privileges to use load data infile使用 load data infile 的最低数据库权限
【发布时间】:2012-12-02 17:40:13
【问题描述】:

我正在使用 mysqlimport 将表中的数据替换为 TSV 文件中的值。一切正常(使用数据库超级用户名和密码导入数据),所以现在我想锁定它,以便执行导入的数据库用户只能影响我要替换的单个表。

我知道我需要在 上授予 FILE。 才能使用“LOAD DATA INFILE”(mysqlimport 包装),但我无法找到我可以授予的最小权限集数据库。

我试过了;

grant FILE on *.* to ...
grant ALL on dbname.tablename to ....

但是当我运行 mysqlimport 时这给了我一个错误;

mysqlimport: Error: Access denied for user ...

有谁知道是否可以隔离数据库以便该用户只能更改相关表,还是我必须允许他们更广泛的访问才能使 mysqlimport 成为可能?

【问题讨论】:

  • 你知道FILE 不在ALL 中吗?这有点用词不当。再说一次,如果您的访问被拒绝,它会在此之前的用户名、主机或密码上失败。

标签: mysql permissions privileges load-data-infile mysqlimport


【解决方案1】:

为了回答我自己的问题,我认为如果不使用有权在数据库中删除和创建任何表的数据库用户,就不可能使用 mysqlimport 替换表中的数据。

mysqlimport 使用您正在加载的文件的名称来决定数据进入哪个表,因此它需要能够删除和重新创建 any 表是有意义的,而不仅仅是表我希望它能够替换。

遗憾。

【讨论】:

    【解决方案2】:

    不幸的是,FILE权限没有绑定到数据库,它是执行INFILE操作所需的全局Mysql权限。

    见http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html#priv_file

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2011-05-31
      • 2012-06-16
      • 2021-10-02
      • 1970-01-01
      • 2013-09-25
      相关资源
      最近更新 更多