
리눅스 및 유닉스 계열의 OS 환경에서는 my.cnf 이름의 설정 파일을 사용한다.
해당 설정 파일을 아무 위치에서나 읽을 수 있는 것은 아니며, 지정된 위치가 있다.
MySQL 서버는 지정된 여러 개의 디렉터리를 순차적으로 탐색하며 처음 발견된 파일을 사용한다.
아래 커맨드를 사용해 해당 내용을 확인할 수 있는데, 탐색 위치 말고도 아주 많은 정보가 출력되므로 잘 찾아보도록 하자...
/usr/local/mysql/bin/mysql --help

하나의 설정 파일에는 여러 개의 설정 그룹을 담을 수 있으며, 대체로 실행 프로그램 이름을 그룹명으로 사용한다.
[mysqld]
user=mysql
port=3306
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/usr/local/mysql/data/mysql_error.log
pid-file=/usr/local/mysql/data/mysqld.pid
...
[그룹명]
설정값
참고로 그룹명 제대로 안넣어주면 서버 실행 자체가 되지 않으니 주의하자!!!
MySQL 서버는 가동하면서 설정 파일의 내용을 읽어 메모리나 작동 방식을 초기화하고, 접속된 사용자를 제어하기 위해 이러한 값을 별도로 저장해 둔다.
이렇게 저장된 값을 시스템 변수라고 하며, 각 시스템 변수는 MySQL 서버에 접속해 SHOW VARIABLES 또는 SHOW GLOBAL VARIABLES라는 명령으로 확인할 수 있다.

Server System Variable Reference
위의 링크로 접속해 아주 많은 시스템 변수를 확인할 수 있다.
더불어 5가지 속성값을 함께 확인할 수 있는데, 각 속성의 의미는 아래와 같다.
시스템 변수는 적용 범위에 따라 글로벌 변수와 세션 변수로 나뉜다.
시스템 변수는 MySQL 서버가 기동 중인 상태에서 변경 기능한지에 따라 동적 변수와 정적 변수로 구분된다.
해당 명령으로 시스템 변수를 변경하면 MySQL 서버는 변경된 값을 즉시 적용함과 동시에 별도의 설정 파일에 변경 내용을 추가로 기록해둔다.
SET PERSIST 명령은 세션 변수에는 적용되지 않는다.
나는 /usr/local/mysql/etc 위치에 설정 파일을 넣어두었다.
앞선 예시 중 max_connections 변수의 값을 설정 파일에 지정해 실제 설정 파일이 적용되고 있는지 확인하였다.



주의!! 설정 파일을 변경한 뒤, MySQL 서버를 재시작 해야 설정이 적용된다.