1、 临时有个需求就是将TXT文本中的数据导入到Mysql数据库中验证一个问题,结果报以下错误:ERROR 1045 (28000): Access denied for user 'xiaokang'@'localhost' (using password: YES)
MariaDB [school]> LOAD DATA INFILE '~/Desktop/data.txt' into table student1;
ERROR 1045 (28000): Access denied for user 'xiaokang'@'localhost' (using password: YES)
2、 意思是用户访问被拒绝了,那就加一下权限,结果加权限时 又报错,错误如下:ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
MariaDB [(none)]> GRANT FILE ON school.* to xiaokang@'localhost' identified by 'XXXXXX';
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
3、查了一些文献大概意思都是说FILE权限针对的是*.*也就是“所有数据库的所有表”,而不能单独对某个库、表授权 。可以发现一些授权是全局的权限,那就改成 “ ON *.* ” ,终于通过了
MariaDB [(none)]> GRANT FILE ON *.* to xiaokang@'localhost' identified by 'XXXXXX';
Query OK, 0 rows affected (0.026 sec)
4、授权完FILE权限后如果还是报原来的错误,那就退出交互模式,再次登陆即可,我这导入数据成功。
MariaDB [school]> LOAD DATA INFILE '~/Desktop/data.txt' into table student1;
ERROR 1045 (28000): Access denied for user 'xiaokang'@'localhost' (using password: YES)
MariaDB [school]> \q
Bye
MariaDB [school]> LOAD DATA INFILE '~/Desktop/data.txt' into table student1;
Query OK, 12000 rows affected, 1 warning (0.003 sec)
Records: 12000 Deleted: 0 Skipped: 0 Warnings: 1
提示:使用 load data语句导入数据需要有处理文件的权限, GRANT FILE ON *.* to xiaokang@'%'; 其中xiaokang为用户名、%为所有网段根据自己情况设置就行。
希望对大家有所帮助,特此记录。