Database

[MySQL] mysql-client local-infile 활성화

비번변경 2022. 4. 7. 17:21

2022.04.06 - [MySQL] ERROR 2068 (HY000) : LOAD DATA LOCAL INFILE file request rejected due to restrictions on access. 글에서 구글링을 통해 조치한 내용과 공식 문서에서 안내한 내용이 조금 달랐다. 차이점은 다음과 같다.

 

  구글링 공식문서
Group mysql, mysqld client
Variables name local-infile loose-local-infile

이전 글에서는 운영 서버에 조치하느라 테스트하지 못했기 때문에, 이 글에서 공식 문서대로 조치했을 때도 mysql-client가 local-infile을 활성화하는지 확인해보려고 한다.

 

테스트한 서버 OS와 MySQL 클라이언트 버전은 아래와 같다.

  • OS : Amazon Linux 2 (CentOS와 유사함)
  • MySQL client : Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1

MySQL 서버 측에서의 local_infile 활성화 여부는 고려하지 않기로 한다.

 

MySQL 클라이언트 옵션 파일/그룹 확인

mysql --help

서버에서 설치된 mysql-cli가 사용하는 옵션 파일과 그룹은 다음과 같다.

  • 옵션 파일 : /etc/mysql/my.cnf, /etc/my.cnf, ~/.my.cnf
  • 그룹 : mysql, client, client-server, client-mariadb

이 서버에서는 /etc/mysql/my.cnf 파일이 존재하지 않아, /etc/my.cnf에 조치하고자 한다. 아마 해당 파일이 없으면 생성하면 될 것 같긴 하다.

MySQL 클라이언트 local-infile 활성화 여부

비활성화되어 있는 것을 확인할 수 있다.

 

/etc/my.cnf 수정

/etc/my.cnf 파일 수정에는 sudo 권한이 필요하다.

사진에 표시한 것처럼 내용을 추가한 뒤 저장한다. 설정 파일 내에 client 그룹이 이미 명시되어 있었다면 그 아래에 Variables 이름과 값만 추가한다. loose- 접두사는 local-infile 옵션을 인식하지 못하는 프로그램의 문제를 방지하기 위함이다.

참고로 local-infile의 경우 값은 생략해도 된다.

 

MySQL 클라이언트 local-infile 활성화 여부 재확인

이상 없이 활성화된 상태를 확인할 수 있다.

 

참고 ) Group과 Variables에 따른 local-infile 활성화 여부

Variables \ Group mysql mysqld client
local-infile    O X O
local_infile O X O
loose-local-infile O X O
loose_local_infile O X O

MySQL 클라이언트는 설정 파일의 -, _ 를 구분하지 않는 것으로 보인다.

 

 


참고 문서

https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html