错误 2068 (HY000):由于访问限制,LOAD DATA LOCAL INFILE 文件请求被拒绝

Niv*_*jan 21 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,created_by,created_on)
SET created_by = 'DH_INITIAL_LOAD', created_on = current_timestamp();
Run Code Online (Sandbox Code Playgroud)

错误 2068 (HY000):由于访问限制,LOAD DATA LOCAL INFILE 文件请求被拒绝。`

它工作正常,我为 python 脚本下载了 pymysql 和 mysql 连接器。我卸载并检查它仍然无法正常工作。版本和 infile 为 ON,

 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)
Run Code Online (Sandbox Code Playgroud)

Niv*_*jan 27

已知问题:https : //bugs.mysql.com/bug.php?id=91872

尝试连接到 mysql 本身时的解决方法将 local-infile 设置为 1 并执行加载命令:mysql --local-infile=1 -h$MASTER_DB_HOST -u$MASTER_DB_USER -p$MASTER_DB_PASSWD -D$MASTER_DB_NAME


big*_*ter 25

使用 MySql Workbench 8 或更高版本引入了这个问题。这为我修复了它:

可以通过以下方式从 MySQL Workbench 8.0 中删除此限制。编辑连接,在“连接”选项卡上,转到“高级”子选项卡,然后在“其他:”框中添加“OPT_LOCAL_INFILE=1”行。

这应该允许使用 Workbench 的客户端像往常一样运行 LOAD DATA INFILE。

引自此链接:https ://bugs.mysql.com/bug.php?id =91872


Utk*_*rsh 7

对于 ubuntu:

  1. 编辑文件 /etc/mysql/mysql.conf.d/mysqld.cnf 并在最后添加以下行:

    #secure_file_priv=""

  2. 重启服务

     systemctl stop mysql 
     systemctl start mysql
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行: mysql -u root -p 并检查本地 infile 变量

      mysql> show global variables like 'local_infile';
    
      +---------------+-------+ 
      | Variable_name | Value |
      +---------------+-------+
      | local_infile  | OFF   |
      +---------------+-------+
      1 row in set (0.00 sec)
    
    Run Code Online (Sandbox Code Playgroud)
  4.   mysql> set global local_infile=true;
    
      +---------------+-------+ 
      | Variable_name | Value |
      +---------------+-------+
      | local_infile  | ON    |
      +---------------+-------+
      1 row in set (0.00 sec)
    
    Run Code Online (Sandbox Code Playgroud)
  5.   mysql> exit
      Bye
    
    Run Code Online (Sandbox Code Playgroud)
  1.  mysql --local-infile=1 -u root -p
    
    Run Code Online (Sandbox Code Playgroud)
  2.   LOAD DATA INFILE '/var/lib/mysql-files/filename' INTO TABLE tablename;
    
    Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 7

要修复此错误(mysql 8):

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

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

[client]
loose-local-infile=1
Run Code Online (Sandbox Code Playgroud)

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

[mysqld]
local_infile=1
Run Code Online (Sandbox Code Playgroud)

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

这是一个简单的使用示例。在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`
);
Run Code Online (Sandbox Code Playgroud)