无法将CSV加载到MySQL-(操作系统errno 13-权限被拒绝)

时间:2019-04-10 05:57:27

标签: mysql csv docker

问题

我想将.csv文件上传到MySQL Docker。
收到错误:File 'xx.csv' not found (OS errno 13 - Permission denied)

我的Dockerfile

FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD password

COPY ./sql-scripts/ /docker-entrypoint-initdb.d/
COPY ./data /var/lib/mysql/
COPY my.cnf /etc/mysql/

EXPOSE 3306

My.cnf

[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
datadir     = /var/lib/mysql


secure-file-priv = ""
local-infile = 1 
symbolic-links=0
!includedir /etc/mysql/conf.d/

我以root用户身份连接到MySQL:

docker exec -it mysql_1 mysql -uroot -proot_password

然后执行SQL命令:

CREATE DATABASE data;
USE data;
CREATE TABLE IF NOT EXISTS `pregnant_mapping` (
    `label` varchar(255),
    `Pregnancy` varchar(255) PRIMARY KEY
);
LOAD DATA INFILE '/var/lib/mysql/pregnant_mapping.csv' INTO TABLE pregnant_mapping;

我尝试过的

试图在命令行中添加LOCAL,但是在我的MySQL版本中不起作用;得到了错误:ERROR 1148 (42000): The used command is not allowed with this MySQL version

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如果将.csv文件放在/ var / lib / mysql目录中,则下面的语句应该起作用

LOAD DATA INFILE'/ var / lib / mysql / result'到表mst_result字段中,以','可选,并以'“'结尾,并以'\ n'终止;

答案 1 :(得分:0)

看到这个问题有点晚,但也许答案可能对某人有所帮助:

平台:Linux (CENTOS 8)

  1. 在/etc/my.cnf.d/mysql-server.cnf中设置
<块引用>
[mysqld]
local-infile = 1
  1. 重新启动你的 MySQL-demon
<块引用>

服务mysqld重启

  1. 使用 mysqlimport 并指定允许本地 infiles:
<块引用>

mysqlimport --user=${user} --password=${password} --local=TRUE -d ${database} your_file

在需要时向 mysqlimport 添加其他参数。