5

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

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

我试过了;

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

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

mysqlimport: Error: Access denied for user ...

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

4

2 回答 2

2

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

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

于 2012-12-14T17:29:49.327 回答
1

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

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

遗憾。

于 2013-01-04T18:18:00.270 回答