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:
systemctl stop mysql
systemctl start mysql
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
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`
);