LOAD DATA LOCAL INFILE,提示ERROR 1148 (42000): The used command is not allowed with this MySQL version

问题描述   

        环境:win7 MySQL Server 8.0
        MySQL直接安装到本机,利用"LOAD DATA LOCAL INFILE filename INTO TABLE tablename"将EXCEL转换成的csv文件导入数据库中表时,提示如下错误:
                                       ERROR 1148 (42000): The used command is not allowed with this MySQL version

官方描述

        根据官方描述,LOAD DATA 功能是将主机上的文件(.txt、.csv等)加载到指定表中;加上LOCAL关键字,则可以将客户机上的文件加载到指定表中。但是,加上LOCAL关键字后,会存在两个潜在的安全问题:
       1. 服务器端可以访问客户端用户在客户端上可读的任何文件。
       2. 在客户端从web服务器连接的情况下,用户可以通过LOAD DATA LOCAL读取Web服务器进程可读的任何文件。

      为了让管理员和应用管理local data的功能,MySQL提供了LOCAL配置。

      服务端

        local_infile系统变量控制了服务器端的LOCAL能力。根据local_infile设置,服务器拒绝或者允许启用LOCAL的客户端加载客户端本地数据。默认情况下,local_infile被禁用。

      客户端

        对于MySQL客户端而言,默认情况下,LOCAL DATA 加载能力也被禁用。为了启用或禁用该功能,可使用--local-infile = 1或0控制。
以上问题详述见下述链接:
https://dev.mysql.com/doc/refman/8.0/en/load-data-local.html

解决方案: 

        1. 修改MySQL服务器端的配置文件my.ini(windows)或my.cnf(Linux),在行末加上loose-local-infile=1。默认安装的情况下,Windows下的my.ini文件路径如下:
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini。
        2. 客户端登录MySQL服务器后,命令修改客户端local_infile的值SET GLOBAL local_infile = 1。用SHOW VARIABLES LIKE ‘local_infile,查看是否修改成功。
        3. 退出MySQL服务器,使用mysql -u root -p --local-infile databasename重新登录即可。

你可能感兴趣的:(数据库)