MySQL 8.4 tarball 인스턴스를 systemd에 등록하기

목차

RPM 인스턴스와 경로·포트를 분리해 MySQL 8.4 tarball을 실행하는 절차입니다. 원본의 서비스명 불일치를 mysqld84로 통일했습니다. 예시는 x86_64·glibc 2.28용 배포 파일이며 OS·아키텍처·라이브러리 호환성을 먼저 확인합니다.

설치 디렉터리 준비

공식 배포처에서 받은 tarball과 체크섬을 확인하고 /usr/local/src에 둡니다. 기존 인스턴스의 데이터 경로에는 초기화 명령을 실행하지 않습니다. mysql 계정이 없다면 서비스용 시스템 계정을 먼저 생성합니다.

TERMINAL / CONFIG
cd /usr/local/src
VER=8.4.8
FILE=mysql-${VER}-linux-glibc2.28-x86_64.tar.xz
sudo tar -xf "$FILE" -C /usr/local
sudo mv /usr/local/mysql-${VER}-linux-glibc2.28-x86_64 /usr/local/mysql84
sudo install -d -o mysql -g mysql -m 750 /usr/local/mysql84/data /var/lib/mysql-files-84
sudo install -o mysql -g mysql -m 640 /dev/null /var/log/mysqld84.log

설정 파일

/etc/my84.cnf에 전용 포트·소켓·데이터 경로를 지정합니다. 바이너리 디렉터리는 관리자가 소유하고 데이터와 로그에만 mysql 쓰기 권한을 부여합니다. SELinux 사용 환경에서는 경로·포트의 정책도 적용합니다.

TERMINAL / CONFIG
[client]
port=53307
socket=/tmp/mysql84.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql84
datadir=/usr/local/mysql84/data
port=53307
socket=/tmp/mysql84.sock
mysqlx=OFF
pid-file=/run/mysqld84/mysqld84.pid
log-error=/var/log/mysqld84.log
secure-file-priv=/var/lib/mysql-files-84

서비스 유닛과 초기화

/etc/systemd/system/mysqld84.service를 작성합니다. --defaults-file은 다른 일반 옵션보다 앞에 둡니다.

TERMINAL / CONFIG
[Unit]
Description=MySQL 8.4 Tarball Instance
After=network.target
[Service]
Type=forking
User=mysql
Group=mysql
RuntimeDirectory=mysqld84
RuntimeDirectoryMode=0755
PIDFile=/run/mysqld84/mysqld84.pid
ExecStart=/usr/local/mysql84/bin/mysqld --defaults-file=/etc/my84.cnf --daemonize
Restart=on-failure
TimeoutSec=600
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
TERMINAL / CONFIG
sudo /usr/local/mysql84/bin/mysqld --defaults-file=/etc/my84.cnf --initialize --user=mysql
sudo systemctl daemon-reload
sudo systemctl enable --now mysqld84
sudo systemctl status mysqld84 --no-pager
/usr/local/mysql84/bin/mysql --defaults-file=/etc/my84.cnf -uroot -p

초기 임시 암호는 보호된 로그에서 확인하고 첫 접속 후 변경합니다. 포트·소켓·datadir을 조회해 다른 MySQL에 접속하지 않았는지 확인합니다. 버전 숫자는 원본 환경의 예시이며 실제 설치할 패치 버전은 별도로 결정합니다.

DB › MySQL
MySQL 목록