nuga@nugawiki: $ cat ./docs/$1
MariaDB/MySQL 설치
테스트 OS: CentOS 6/7 · DB: MariaDB 10.0·10.2 / MySQL 5.1·5.7·8.0
OS 사전 설정
ulimit
vim /etc/security/limits.conf
# 추가
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
Hostname
# CentOS 6
vim /etc/sysconfig/network # HOSTNAME=호스트네임
# CentOS 7
hostnamectl set-hostname 호스트네임 --static && reboot
시간대 (UTC→KST)
rm /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date
패키지 설치
- RPM 저장소: downloads.mariadb.org · archive
- OS 호환: mariadb.com OS compatibility
저장소 등록 (특정 버전)
vim /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum clean all && yum repolist
yum install MariaDB-server MariaDB-client
# 또는: yum install mysql-server mysql-client
# RPM 직접: rpm -Uvh MySQL-*.rpm [--force]
rpm -qa | grep -iE 'MariaDB|mysql'
기본 경로: datadir /var/lib/mysql · 로그 /var/log/mysqld.log · cnf /etc/my.cnf 또는 /etc/my.cnf.d/ · sock/pid /var/run/mysqld/
컴파일 설치
yum install gcc gcc-c++ libtermcap-devel gdbm-devel zlib* libxml* \
freetype* libpng* libjpeg* iconv flex gmp ncurses-devel cmake.x86_64 libaio gnutls-devel
# MySQL 8.0+: cmake 3+, gcc 5.3+
cd /usr/local/src
wget https://downloads.mysql.com/archives/get/file/mysql-5.7.20.tar.gz
tar zxvf mysql-5.7.20.tar.gz && mkdir build-mysql && cd build-mysql
groupadd mysql && useradd -g mysql mysql
소스: MariaDB releases · MySQL archives
다중 설치 시 반드시 분리: CMAKE_INSTALL_PREFIX · MYSQL_DATADIR · MYSQL_UNIX_ADDR · MYSQL_TCP_PORT · INSTALL_SYSCONFDIR
# MariaDB 10.2
cmake ../mariadb-10.2.x \
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.2 \
-DMYSQL_DATADIR=/usr/local/mariadb-10.2/data \
-DMYSQL_UNIX_ADDR=/tmp/mariadb.sock \
-DMYSQL_TCP_PORT=3307 \
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=all
# MySQL 5.7
cmake ../mysql-5.7.x \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7 \
-DMYSQL_DATADIR=/usr/local/mysql-5.7/data \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost_1_59_0 \
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1
make && make install
chown -R mysql:mysql /usr/local/mysql && chmod -R 755 /usr/local/mysql
# 초기 DB
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=데이터경로
# 또는 버전별 mysqld --initialize
my.cnf 샘플·튜닝은 별도 글 참고. 다중 DB면 /etc/my.cnf 충돌 주의 → 인스턴스별 cnf.
기동·root·서비스
# 컴파일
cd /usr/local/mysql/bin && ./mysqld_safe &
# 패키지
mysqld_safe &
# 또는
systemctl start mariadb # CentOS 7
service mysql start # CentOS 6
mysqladmin -uroot password 'CHANGE_ME'
# MySQL 5.7+
# ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'CHANGE_ME';
# FLUSH PRIVILEGES;
mysql_secure_installation
netstat -anp | grep mysql | grep LISTEN
mysql --version
CentOS 7 systemd 유닛 예: ExecStart=/usr/local/mysql/bin/mysqld_safe --user=mysql → systemctl daemon-reload.
트러블슈팅
- socket 권한 (
/tmp/mysql.sock등) ·-S로 지정 --defaults-file=로 cnf 지정- 에러 로그:
/var/log/mysqld.log/*.err
관련 링크: https://app.notion.com/p/25c032ef73b84ae7b39262de324ff34e
./comments