MySQL

MySQL: RHEL 기반 Linux에 MySQL 설치 방법

dewstream 2025. 6. 20. 08:00
728x90

※ Installing MySQL 8.0 on Linux from source.
※ Version: Linux 8.10 (Rocky), MySQL 8.0.
※ 싱글 환경은 CPU 2Core, Memory 4GB 이상을 권장합니다.

 

안녕하세요. 듀스트림입니다.

 

오늘 포스팅은 MySQL InnoDB 스토리지 엔진 설치 방법입니다.

 

InnoDB로 세팅하는 이유는 InnoDB만 트랜잭션 지원을 합니다. 그래서 실무에서는 InnoDB만 사용합니다.

 

+ MySQL 스토리지 엔진 종류

엔진 특징 트랜잭션 지원 주 용도
InnoDB 디스크 기반, ACID, MVCC, 외래키 지원 기본 엔진, 대부분의 OLTP
MyISAM 오래된 엔진, 빠르지만 트랜잭션 없음 읽기 전용/가벼운 작업
MEMORY 메모리 기반, 속도 빠름, 휘발성 임시 테이블, 세션 캐시
CSV 데이터를 CSV 파일로 저장 파일 기반 분석용
ARCHIVE 압축 저장, INSERT 전용 로그 보관, 장기 보관용
BLACKHOLE 데이터 저장 안함, 로그만 기록 로깅, 테스트
FEDERATED 원격 MySQL에 연결하는 프록시 엔진 분산 MySQL 연결
NDB Cluster 진짜 "다중 마스터 클러스터"용 엔진 MySQL NDB Cluster 전용

1. 사전 준비

▸ 패키지 업데이트 및 필수 패키지 설치

dnf update -y
dnf groupinstall -y "Development Tools"
dnf install -y cmake ncurses-devel bison openssl-devel libaio-devel wget git boost-devel libtirpc libevent-devel
dnf install -y rpcgen
dnf install -y gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc
dnf config-manager --set-enabled crb
dnf makecache
dnf install -y libtirpc-devel

 

▸ SELinux 비활성화

setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

 

▸ 방화벽 포트 오픈

# MySQL 기본 포트: 3306
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

 

▸ 시간 동기화

dnf install -y chrony
systemctl enable --now chronyd

2. MySQL 다운로드 및 설치

 wget을 활용하여 MySQL을 다운로드하고 압축 해제

cd ~
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36.tar.gz
tar -xzf mysql-8.0.36.tar.gz
cd mysql-8.0.36

 

▸ Boost 다운로드 및 압축 해제

cd ~
wget https://downloads.sourceforge.net/project/boost/boost/1.77.0/boost_1_77_0.tar.bz2

# file boost_1_77_0.tar.bz2

mkdir boost_1_77_0
tar -xjf boost_1_77_0.tar.bz2 -C /root/boost_1_77_0 --strip-components=1

 

▸ CMake 실행

cd /root/mysql-8.0.36

mkdir build && cd build

cmake .. \
  -DWITH_BOOST=/root/boost_1_77_0 \
  -DCMAKE_INSTALL_PREFIX=/mysql \
  -DSYSCONFDIR=/etc \
  -DWITH_SSL=system \
  -DWITH_ZLIB=bundled \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DWITH_FEDERATED_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_DEBUG=0

 

▸ 컴파일, 설치

make -j$(nproc) && make install

 

▸ MySQL 유저, 디렉토리 생성 및 권한 설정

# 그룹 및 로그인 불가 유저 생성
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 디렉토리 생성 및 권한 설정
mkdir -p /data/mysql_data
chown -R mysql:mysql /data
chmod -R 750 /data

cd /mysql
mkdir mysql-files etc
chown mysql:mysql mysql-files etc
chmod 750 mysql-files etc

 

 

▸ MySQL 환경 설정

vi /mysql/etc/my.cnf
[mysqld]
basedir=/mysql
datadir=/data/mysql_data
socket=/data/mysql_data/mysql.sock
pid-file=/mysql/etc/mysql.pid
port=3306
user=mysql
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

 

▸ PATH 추가

echo 'export PATH=/mysql/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

 

▸ 데이터 디렉토리 초기화

/mysql/bin/mysqld --defaults-file=/mysql/etc/my.cnf --initialize --user=mysql
이 과정에서 root 계정의 임시 비밀번호가 로그로 출력됩니다.

 

▸ 시작

/mysql/bin/mysqld_safe --defaults-file=/mysql/etc/my.cnf --user=mysql &

# RHEL 6 버전 이하는 아래 사용
cd /mysql
cp support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on
service mysql start

 

▸ 기본 보안 설정

/mysql/bin/mysql_secure_installation
위에 출력된 root 계정의 임시 비밀번호를 사용하여 요건에 맞게 설정하시면 됩니다.

 

▸접속 확인

mysql -u root -p

 

+ 정지 방법

/mysql/bin/mysqladmin -u root -p shutdown

오늘은 여기까지~

 

728x90

'MySQL' 카테고리의 다른 글

MySQL: 프리픽스 인덱스  (0) 2025.09.08
MySQL: 메모리 파라미터  (3) 2025.08.26
MySQL: CHARACTER SET, COLLATE 설정  (4) 2025.08.25
MySQL: Lock  (3) 2025.07.29
MySQL: InnoDB Cluster 고가용성 구성  (3) 2025.07.25