我正在使用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成为可能?
答案 0 :(得分:2)
不可取的是,FILE权限没有绑定到数据库,它是执行INFILE操作所需的全局Mysql权限。
请参阅http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html#priv_file
答案 1 :(得分:1)
要回答我自己的问题,我认为不使用mysqlimport替换表中的数据而不使用有权至少删除并在数据库中创建任何表的数据库用户。
mysqlimport使用您正在加载的文件的名称来决定数据进入哪个表,因此它需要能够删除并重新创建任何表,而不仅仅是表我希望它能够替换。
可惜。