Mysql 错误2068(HY000):由于访问限制,加载数据本地填充文件请求被拒绝

Mysql 错误2068(HY000):由于访问限制,加载数据本地填充文件请求被拒绝,mysql,load,Mysql,Load,我正在努力 mysql> LOAD DATA LOCAL INFILE '/var/tmp/countries.csv' INTO TABLE countries FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (CountryId,CountryCode,CountryDescription,CountryRegion,LastUpdatedDate

我正在努力

mysql> 

LOAD DATA LOCAL INFILE '/var/tmp/countries.csv' 
INTO TABLE countries 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' LINES 
TERMINATED BY '\n' 
IGNORE 1 LINES 
(CountryId,CountryCode,CountryDescription,CountryRegion,LastUpdatedDate,created_by,created_on)
SET created_by = 'DH_INITIAL_LOAD', created_on = current_timestamp();
错误2068(HY000):由于访问限制,加载数据本地填充文件请求被拒绝`

工作正常,我下载了pymysql和mysql连接器,用于python脚本。我卸载并检查了它仍然不工作。 verion和Inflie正在启动

 select version() -| 8.0.17



mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+
1 row in set (0.00 sec)
已知问题:

对于尝试连接mysql本身时的解决方法,请将local infle设置为1并执行load命令:
mysql--local infle=1-h$MASTER\u DB\u HOST-u$MASTER\u DB\u USER-p$MASTER\u DB\u PASSWD-D$MASTER\u DB\u NAME

使用mysql Workbench 8或更高版本介绍了此问题。这为我解决了这个问题:

此限制可以从MySQL Workbench 8.0中的 沿着这条路走。编辑连接,在“连接”选项卡上,转到 “高级”子选项卡,并在“其他:”框中添加行 “OPT_LOCAL_infle=1”

这应该允许使用工作台的客户端运行加载数据填充 像往常一样

引自此链接: 对于ubuntu:

  • 编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf,并在末尾添加以下行:

    #secure_file_priv=“”
  • 重新启动服务

     systemctl stop mysql 
     systemctl start mysql
    
  • 运行:mysql-u root-p并检查本地infle变量

      mysql> show global variables like 'local_infile';
    
      +---------------+-------+ 
      | Variable_name | Value |
      +---------------+-------+
      | local_infile  | OFF   |
      +---------------+-------+
      1 row in set (0.00 sec)
    
  •  mysql --local-infile=1 -u root -p
    
  • 要修复此错误(mysql 8):

    错误2068(HY000):加载数据本地填充文件请求由于以下原因被拒绝 对访问的限制

    将以下行添加到服务器的配置文件中的“客户端”部分下:

    这将修复错误。但是,这假设您已经在“mysqld”部分下设置了以下内容:

    在配置文件中设置这两个参数将允许从任何目录加载数据

    下面是一个简单的使用示例。在mysql终端中运行:

    load data local infile '/path/to/file/data.tsv' into table my_table_name
     fields terminated by '\t'
     LINES TERMINATED BY  '\n'
    (
     `col1`,
     `col2`,
     `col3`,
     `col4`
    );
    

    请检查文件夹的权限,您也可以尝试将其更新到较新的版本Remove
    LOCAL
    关键字-这在您的情况下是错误的。然后检查:1)用于MySQL守护进程启动的OS帐户的访问权限(在文件系统中);2)系统变量(done-ON是正确值);3)用于执行查询的MySQL帐户的文件权限。如果我删除local关键字,它向我抛出一个错误,错误为1045(28000):用户“admin”@“%”的访问被拒绝(使用密码:YES)显示变量,如“secure_file_priv”;-/tmp/尝试将文件放在/tmp下,但仍面对问题进行了检查。
     mysql --local-infile=1 -u root -p
    
      LOAD DATA INFILE '/var/lib/mysql-files/filename' INTO TABLE tablename;
    
    [client]
    loose-local-infile=1
    
    [mysqld]
    local_infile=1
    
    load data local infile '/path/to/file/data.tsv' into table my_table_name
     fields terminated by '\t'
     LINES TERMINATED BY  '\n'
    (
     `col1`,
     `col2`,
     `col3`,
     `col4`
    );