MySQL을 배우고 LOAD DATA
절을 사용해 보았습니다 . 아래처럼 사용했을 때 :
LOAD DATA INFILE "text.txt" INTO table mytable;
다음과 같은 오류가 발생했습니다.
MySQL 서버가 –secure-file-priv 옵션으로 실행 중이므로이 명령문을 실행할 수 없습니다.
이 오류를 어떻게 해결합니까?
동일한 오류 메시지 에서 다른 질문을 확인 했지만 여전히 해결책을 찾을 수 없습니다.
MySQL 5.6을 사용하고 있습니다
답변
의도 한대로 작동합니다. MySQL 서버는 –secure-file-priv 옵션 으로 시작되었으며 기본적으로를 사용하여 파일을로드 할 수있는 디렉토리를 제한합니다 LOAD DATA INFILE
.
SHOW VARIABLES LIKE "secure_file_priv";
구성된 디렉토리를 보는 데 사용할 수 있습니다 .
두 가지 옵션이 있습니다.
- 에서 지정한 디렉토리로 파일을 이동하십시오
secure-file-priv
. - 비활성화합니다
secure-file-priv
. 시작시 제거해야하며 동적으로 수정할 수 없습니다. 이렇게하려면 MySQL 시작 매개 변수 (플랫폼에 따라 다름)와 my.ini를 확인하십시오.
답변
나는 같은 문제가 있었다. 마침내 LOCAL
명령 의 옵션을 사용하여 해결 했습니다.
LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;
자세한 정보는 여기 http://dev.mysql.com/doc/refman/5.7/en/load-data.html에서 찾을 수 있습니다.
LOCAL이 지정되면 클라이언트 호스트의 클라이언트 프로그램이 파일을 읽고 서버로 보냅니다. 파일은 정확한 위치를 지정하기 위해 전체 경로 이름으로 제공 될 수 있습니다. 상대 경로 이름으로 제공된 경우 이름은 클라이언트 프로그램이 시작된 디렉토리를 기준으로 해석됩니다.
답변
Ubuntu 14 및 Mysql 5.5.53에서이 설정은 기본적으로 활성화 된 것으로 보입니다. 비활성화하려면 secure-file-priv = ""
mysqld 구성 그룹 아래의 my.cnf 파일에 추가 해야합니다. 예 :-
[mysqld]
secure-file-priv = ""
답변
Debian에서 MySQL5.7.11을 작업 중입니다. 디렉토리를 볼 수있는 명령은 다음과 같습니다.
mysql> SELECT @@global.secure_file_priv;
답변
Windows 7 secure-file-priv
에서 vhu의 답변 에서 옵션 # 2 를 비활성화하는 데 도움이 된 것은 다음과 같습니다 .
- 로 이동하여 MySQL 서버 서비스를 중지하십시오
services.msc
. C:\ProgramData\MySQL\MySQL Server 5.6
(ProgramData
내 경우에는 숨겨진 폴더였습니다)로 이동하십시오 .my.ini
메모장 에서 파일을 엽니 다.- ‘secure-file-priv’를 검색하십시오.
- 줄 시작 부분에 ‘#’을 추가하여 줄을 주석 처리하십시오. MySQL Server 5.7.16 이상에서는 주석이 작동하지 않습니다. 다음과 같이 빈 문자열로 설정해야합니다.
secure-file-priv=""
- 파일을 저장하십시오.
- 로 이동하여 MySQL 서버 서비스를 시작하십시오
services.msc
.
답변
파일이 머신에 로컬 인 경우 명령에 LOCAL 을 사용하십시오.
LOAD DATA LOCAL INFILE "text.txt" INTO table mytable;
답변
v
나는 SHOW VARIABLES LIKE "secure_file_priv";
그것을 C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\
연결했고 그것을 꽂았을 때 여전히 작동하지 않았다.
my.ini 파일로 직접 이동했을 때 경로의 형식이 약간 다르다는 것을 발견했습니다. C:/ProgramData/MySQL/MySQL Server 8.0/Uploads
그런 다음 그것을 사용했을 때 효과가있었습니다. 유일한 차이점은 슬래시의 방향입니다.