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

6kkfgxo0  于 2022-12-26  发布在  Mysql
关注(0)|答案(8)|浏览(1681)

我正在努力,

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):由于访问限制,LOAD DATA LOCAL INFILE文件请求被拒绝。'
它工作正常,我下载了pymysql和mysql连接器的python脚本。我卸载和检查仍然不工作。verion和infile是开着的,

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)
xmd2e60i

xmd2e60i1#

使用MySql Workbench 8或更高版本会引入这个问题。这为我修复了它:
可以通过以下方式从MySQL Workbench 8.0中删除此限制。编辑连接,在“连接”选项卡上,转到“高级”子选项卡,然后在“其他:”框中添加行“OPT_LOCAL_INFILE= 1”。
这应该允许使用Workbench的客户端像往常一样运行LOAD DATA INFILE。
引自此链接:https://bugs.mysql.com/bug.php?id=91872

huwehgph

huwehgph2#

已知问题:https://bugs.mysql.com/bug.php?id=91872
当尝试连接到mysql本身时,解决方法是将local-infile设置为1并执行load命令:mysql**--本地输入文件= 1**-h $主数据库主机-u $主数据库用户-p $主数据库密码-D $主数据库名称

wxclj1h5

wxclj1h53#

对于ubuntu:
1.编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf并添加以下内容:

[mysqld]
secure-file-priv = ""

1.重新启动服务

systemctl restart mysql

1.运行: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)
mysql> set global local_infile=true;

  +---------------+-------+ 
  | Variable_name | Value |
  +---------------+-------+
  | local_infile  | ON    |
  +---------------+-------+
  1 row in set (0.00 sec)
mysql> exit
  Bye

1.运行

mysql --local-infile=1 -u root -p
LOAD DATA INFILE '/var/lib/mysql-files/filename' INTO TABLE tablename;
2nbm6dog

2nbm6dog4#

修复此错误(mysql 8):
错误2068(HY000):由于访问限制,LOAD DATA LOCAL INFILE文件请求被拒绝。
在服务器的配置文件中的"client"部分下添加以下行:

[client]
loose-local-infile=1

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

[mysqld]
local_infile=1

在配置文件中设置这两个参数将允许从任何目录加载数据。
下面是一个简单的使用示例,在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`
);
hgb9j2n6

hgb9j2n65#

对于Mac用户,如果上述解决方案不起作用(我正在使用Mac OS大苏尔)
转到终端并键入

$ vi ~/.my.cnf

然后将其添加到文件中

[mysqld]
secure_file_priv = ''

保存并退出窗口。现在转到终端并使用

$mysql.server restart

输入mysql服务器使用

$ mysql -u <your username> -p

现在在mysql中输入以下内容

mysql> SHOW VARIABLES LIKE "secure_file_priv";

这应该会将变量的值显示为空。

load data local infile '<complete_file_path>' 
into table <table_name>
fields terminated by ',';

这应该会起作用!另外,请确保您已使用将以下变量设置为"ON":

set global local_infile = 1;
    • 更新**

对于安装了mysql8.0的windows用户,下面是上面提到的安全文件变量

secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"
dgiusagp

dgiusagp6#

在Windows上:
在客户端和服务器以及设置中启用本地后(在my.ini中)

[client]
          local_infile=1
        [mysqld]
          secure_file_priv=""

 the sql command ...
   load data local infile "FILE" 
 change to 
    load data infile "FILE"

works every time ...
so much so I do not even use the load local anymore and am not sure of the point of the command ...
du7egjpx

du7egjpx7#

对于mac m1用户(大苏尔、 Monterey 、文图拉):-

·第一个系统首选项--〉MySql“停止MySql服务器”
对于macOS,“Ventura”将位于MySQL系统设置的底部
·在/usr/local中创建etc/my.cnf文件,即(/usr/local/etc/my.cnf)
https://drive.google.com/file/d/13XbMKYcmkzM4MGNCW0s70pfLqMDNhuoh/view?usp=sharing
·现在使用文本编辑编辑“my.cnf”文件:-

[client]
loose-local-infile=  1

[mysqld]
local_infile = 1
secure-file-priv = ""

按照所示图像操作
[Step 1]:https://i.stack.imgur.com/8yZdk.png
[Step 2]:https://i.stack.imgur.com/yk9b1.jpg
在连接--〉高级--〉其他(编辑)下:-

OPT_LOCAL_INFILE = 1

[Step 3]:https://i.stack.imgur.com/TlEJ5.jpg
·在系统首选项下“启动MySql Server”
·始终在MySql Workbench的代码中使用它,以便正常工作

SHOW GLOBAL VARIABLES LIKE 'local_infile';
    
SET GLOBAL local_infile = true;   /* We can use here ON also in place of true */
    
LOAD DATA LOCAL INFILE  
'/Users/ram/Downloads/DataSet.csv'
into table dress
FIELDS TERMINATED by ','
ENCLOSED by '"'
lines terminated by '\n'
IGNORE 1 ROWS;

如果你喜欢这个方法,那么请upvote这篇文章

d4so4syb

d4so4syb8#

错误2068:由于访问限制,LOAD DATA LOCAL INFILE文件请求被拒绝
在Windows 11 64位操作系统(基于x64的处理器,内部版本号22621.963,版本22 H2)上,使用Web安装程序.MSI文件作为开发人员配置安装MySQL。
将my.ini从C:\ProgramData\MySQL\MySQL Server 8.0中的默认值更改为
在[客户端]部分中,添加local_infile=ON

In the [mysql] section add local_infile=ON

In the [mysqld] section add local_infile=ON

Also change the line secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads" to secure-file-priv=""

下面的代码可以从连接到我的本地示例的MySQL Workbench中运行-

CREATE DATABASE northwind;

use northwind;
show tables;
create table shippers (
    shipperID int,
    company varchar(255),
    phone varchar(255)
);

通过创建.CSV文件使用此数据

ShipperID,CompanyName,Phone
1,Speedy Express,(503) 555-9831
2,United Package,(503) 555-3199
3,Federal Shipping,(503) 555-9931

将.CSV文件复制到C:\程序数据\MySQL\MySQL服务器8.0\Data\北风
此代码用于加载托运人表-

use northwind;
#SHOW VARIABLES LIKE "secure_file_priv";
#SHOW VARIABLES LIKE "local_infile";
LOAD DATA INFILE 'nw_shippers.csv' 
INTO TABLE shippers 
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
select * from shippers;

也适用于MySQL
选择版本();给出“8.0.31”
帮助〉关于Workbench给出“版本8.0.31内部版本2235049 CE 64位”

相关问题