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 |