데이터 로드 시 MySQL "명령이 허용되지 않음" 오류 해결
LOAD DATA LOCAL
을 사용하는 동안 MySQL 오류 "ERROR 1148: 이 MySQL 버전에서는 사용된 명령이 허용되지 않습니다."가 발생하면 LOCAL
키워드가 비활성화되었음을 의미합니다. 이는 보안 조치입니다. 데이터를 로컬로 로드하려면 local-infile
옵션을 명시적으로 활성화해야 합니다.
클라이언트 측 솔루션:
가장 간단한 해결책은 MySQL 서버에 연결할 때 local-infile
를 활성화하는 것입니다.
<code class="language-bash">mysql -u myuser -p --local-infile mydatabase</code>
myuser
를 MySQL 사용자 이름으로 바꾸고, -p
에 비밀번호를 입력하고, mydatabase
을 데이터베이스 이름으로 바꾸세요.
중요 보안 참고 사항: local-infile
을 활성화하면 보안 취약점이 발생합니다. 꼭 필요한 경우에만 활성화하고 나중에는 비활성화하세요.
서버측 솔루션(영구적이지만 주의가 필요함):
보다 영구적인 솔루션을 원한다면 MySQL 서버 자체에서 local-infile
를 활성화하세요. 이를 위해서는 MySQL 구성 파일(Linux/macOS의 경우 my.cnf
, Windows의 경우 my.ini
)을 수정해야 합니다. 서버 구성 파일을 수정할 때는 각별히 주의하세요. 잘못된 변경은 서버 보안을 손상시킬 수 있습니다.
my.cnf
파일에 다음 줄을 추가하거나 수정하세요.
<code>loose-local-infile = 1</code>
그런 다음 변경 사항을 적용하려면 MySQL 서버를 다시 시작하세요. 데이터 로딩이 완료된 후 loose-local-infile
를 다시 0으로 설정하거나 해당 줄을 제거하여 보안 위험을 완화하는 것이 좋습니다.
대체 접근 방식(권장):
가장 안전하고 일반적으로 선호되는 방법은 LOAD DATA LOCAL
을 모두 피하는 것입니다. 대신 클라이언트의 로컬 파일 시스템에서 직접 데이터를 로드하지 않는 방법을 사용하십시오. 여기에는 다음이 포함될 수 있습니다.
mysqlimport
사용: 이 명령줄 도구는 파일에서 데이터를 가져올 때 더 안전한 대안입니다.scp
, sftp
또는 기타 보안 파일 전송 방법을 사용하여 서버에 데이터 파일을 업로드한 다음 LOAD DATA INFILE
을 사용합니다( 키워드) 서버의 파일 시스템에서 데이터를 로드합니다.LOCAL
활성화는 임시 조치여야 하며, 대체 접근 방식은 일반적으로 장기적인 데이터 로드에 더 안전하고 권장됩니다.local-infile
위 내용은 로드 데이터를 사용할 때 'MySQL 버전으로 허용되지 않는 명령'오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!