[MariaDB] 6. MySQL 설정 파일 my.cnf 위치


MySQL/MariaDB 사용시에 MySQL 설정 파일 my.cnf 관한 포스팅이다.

본인은 Mac OS에서 Homebrew 로 MariaDB 10.5 이상을 설치한 경우이다.



1. mysql.cnf 이란?

my.cnf는 Unix 계열의 mysql 설정파일이다. Windows 계열은 my.ini 파일로 관리된다.


2. mysql 설정 파일의 우선 순위

MySQL을 실행시킬 때 my.cnf라는 이름의 설정 파일을 사용하게 되는데, MySQL에서는 my.cnf는 여러 곳에 위치가 가능하며, 여러 경로에서 가장 먼저 로드되는 my.cnf 파일 설정내용으로 MySQL이 설정된다.

MySQL이 my.cnf 파일 위치 확인

$ mysql --help | grep my.cnf
/usr/local/etc/my.cnf ~/.my.cnf 
                    order of preference, my.cnf, $MYSQL_TCP_PORT,


Homebrew으로 설치시에 아래와 같이 2군데서 설정파일을 확인 할 수가 있다.

/usr/local/etc/my.cnf
/usr/local/Cellar/mariadb/10.5.9/.bottle/etc/my.cnf



3. my.cnf 파일 기본 설정

my.cnf 파일은 그룹([client], [mysqld]) 등 기준으로 설정 내용을 기술한다.

[client]
socket=/var/lib/mysql/mysql.sock #클라이언트 통신 파일

default-character-set=utf8mb4
port=3306 #클라이언트 연결 통신 포트


[mysqld]
socket=/var/lib/mysql/mysql.sock #서버 사이드 통신 파일

bind-address=0.0.0.0 #특정 IP 주소만 접근 허용시, IP기술
port=3306 #서버 연결 통신 포트

datadir=/var/lib/mysql/data/mariadb #데이터베이스 저장 목록
tmpdir=/var/lib/mysql/tmp #임시 파일을 저장할 정렬 디스크 기반 가벼운 임시 테이블

user=mysql


[mysqld_safe]
socket=/var/lib/mysql/mysql.sock

log-error=/var/lib/mysql/log/mysqld.log
pid-file=/var/lib/mysql/mysqld/mysqld.pid



4. my.cnf 기술에 따른 추가 설정

구글링을 하면 여러 mysql 설정이 기술 된 my.cnf 관련 포스팅이 많다. 하지만 mysql, mariadb 또 버전이나 OS 환경에 따라 상이하기에 무작정 아무렇게나 가져다 사용하면 에러 발생 시에 힘들어진다.


설정에 따른 디렉터리 생성


그래서 예를 들어 위와 같이 설정파일을 기본적인거만 기술한디는 가정하에 디렉터리 생성 및 권한 부여 등이 필요하다. 추가적인 설정 등은 log파일을 보면서 설정을 진행하면 된다.


socket 심볼릭링크 설정


socket 위치를 /var/lib/mysql/mysql.sock 변경했기 때문에 /tmp/mysql.sock 을 /var/lib/mysql/mysql.sock 로 심볼릭링크를 걸어야 한다.

$ sudo ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
$ ls -al
lrwxr-xr-x  1 linked2ev  admin   25  6 20 16:16 mysql.sock -> /var/lib/mysql/mysql.sock

/tmp/mysql.sock 라는 원본파일이 /var/lib/mysql/mysql.sock 에 Symbolic Link가 연결되었다는 의미이다.



5. 설정 후에 로그인 정상 확인


mariadb_mycnf_file_01




[참고]