我想为john mysql用户允许LOAD DATA命令.所以我以root身份登录mysql终端并发出以下声明:
grant file on johndatabase.* to 'john'@'localhost';
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
Run Code Online (Sandbox Code Playgroud)
如果我换johndatabase.*了*.*,那么一切正常.但并不*.*意味着所有数据库?我想将john mysql用户限制为johndatabase.
尝试将数据从平面文件数据库转储加载到新表时,我遇到了权限错误.我知道文件和我的表的架构是相同的,我尝试调整权限.我还应该尝试什么?
mysql> load data infile 'myfile.txt' into table mytable fields terminated by ',' enclosed by '"';
ERROR 1045 (28000): Access denied for user 'user'@'%'
grant all on mytable.* to 'user'@'%
Run Code Online (Sandbox Code Playgroud) 我正在使用mysqlimport用TSV文件中的值替换表中的数据.一切正常(使用数据库超级用户名和密码导入数据),所以现在我想将其锁定,以便执行导入的数据库用户只能影响我要替换的单个表.
我知道我需要授予FILE .为了使用"LOAD DATA INFILE"(mysqlimport包装),但是我无法找到我可以在数据库上授予的最小权限集.
我试过了;
grant FILE on *.* to ...
grant ALL on dbname.tablename to ....
Run Code Online (Sandbox Code Playgroud)
但是当我运行mysqlimport时,这给了我一个错误;
mysqlimport: Error: Access denied for user ...
Run Code Online (Sandbox Code Playgroud)
有没有人知道是否有可能隔离数据库,以便只有相关的表可以被这个用户改变,或者我是否必须允许他们更广泛的访问才能使mysqlimport成为可能?