CentOS서버에 MariaDB(MySQL)를 설치했던 기록을 남긴다. 사내 환경이 인터넷에 연결되지 않은 폐쇄망이기 때문에 yum install로 설치할 수 없다. 이러한 오프라인 환경에서 직접 수동으로 설치해보자.
0. MariaDB란? MySQL과의 차이는?
RDB 중에 제일 많이 쓰는 건 누가 뭐래도 MySQL인 것 같다. MariaDB는 일하면서 처음 들어봤는데, 일단 나 같은 사용자 입장에서는 MySQL과 99% 유사하다.
MySQL이 오라클에 인수되면서 유료화 되었고, 이에 따라 MySQL을 만든 사람이 오라클을 나와 MariaDB를 오픈소스로 개발하게 됐다고 한다.(학생 때는 상업용 라이센스의 비용 걱정을 할 필요가 없었기 때문에 회사에 와서 처음으로 들어본 것 같다.)
1. 바이너리 파일 다운로드
아래 링크에서 엄청 큰 다운로드 버튼을 눌러서 다운받는다. 사실 나는 우리 서버 기존 버전에 맞춰 저 아래에 있는 10.4. 대 버전을 받았다.
https://downloads.mariadb.org/mariadb/
우선 오른쪽에서 CPU만 64-bit를 선택해주면 많이 걸러진다.
CentOS는 mariadb-10.4.20-linux-systemd-x86_64.tar.gz 를 받으면 된다. (systemd 쓸 거면... 안 쓸 거면 그냥 mariadb-10.4.20-linux-x86_64.tar.gz 받아도 된다. 하지만 systemd 추천!)
다운로드한 파일을 어떻게든 서버로 옮겨준다.
참고) 또는, 인터넷에서 받아올 수 있다면, 우클릭해서 주소를 복사해주고, 아래 명령 한 줄로 다운받는다.
wget https://downloads.mariadb.org/interstitial/mariadb-10.4.20/bintar-linux-systemd-x86_64/mariadb-10.4.20-linux-systemd-x86_64.tar.gz/from/https%3A//mirror.yongbok.net/mariadb/ --no-certificate-user
2. 유저 및 그룹 생성
groupadd mysql # 그룹 생성
useradd -g mysql mysql # 유저 생성
# 압축 파일 소유권 변경
chown -R mysql:mysql mariadb-10.4.20-linux-systemd-x86_64.tar.gz
chown으로 소유권 변경까지 잘하고 나면, ls -al을 했을 때 아래와 같이 mysql 그룹의 mysql 유저가 소유하고 있는 걸 확인할 수 있다.
3. 압축 풀기
- 설치 경로 : /usr/local
# 압축 폴더를 /usr/local 아래로 이동
mv mariadb-10.4.20-linux-systemd-x86_64.tar.gz /usr/local/
# 압축 해제
tar -zxvf mariadb-10.4.20-linux-systemd-x86_64.tar.gz
# 사용성을 위해 심볼릭 링크 걸어주기
ln -s ./mariadb-10.4.20-linux-systemd-x86_64 /usr/local/mysql
4. 환경변수 등록
/etc/profile 파일을 수정해서, 어디서든 명령어가 실행될 수 있게 한다. source로 적용해줘야 함을 잊지 말자.
vi /etc/profile
# 내용
export MARIADB_HOME=/usr/local/mysql
export PATH=$PATH:$MARIADB_HOME/bin:.
# 저장후 바로 적용
source /etc/profile
5. 설치
압축 푼 폴더에 scripts라는 디렉토리 아래의 실행파일을 돌리면 설치가 된다.
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql
Trouble Shooting
현상)
위 명령을 실행시켰는데 이런 메세지를 뱉으며 실패했다....
./bin/mysqld: error while loading shared libraries libaio.so.1: cannot open shared object file: No such file or directory
해결)
여기서 rpm 파일 다운로드 ( libaio-0.3.109-13.el7.x86_64.rpm )
https://centos.pkgs.org/7/centos-x86_64/libaio-0.3.109-13.el7.x86_64.rpm.html
아래 명령어로 설치
yum install -y libaio-0.3.109-13.el7.x86_64.rpm
하고 나서 다시 위의 스크립트를 돌리니까 잘 된다!
6. 설정 파일(my.cnf) 수정
기본 설정 파일 위치는 /etc/my.cnf 이다.
여기에 원하는 설정대로 내용을 채운다. 나는 기존에 사내에서 운영 중인 MariaDB의 설정을 비슷하게 가져다가 썼고, 아래는 MariaDB에서 권장하는 기본 옵션이라고 한다.
중요) datadir에 지정된 디렉토리+ socket 디렉토리에 mysql이라는 user가 접근 가능해야 한다. (필요시 2번에서 한 것처럼 chown으로 소유권을 꼭 변경해주자)
[client-server]
socket=/tmp/mysql.sock
#port=3306
# This will be passed to all MariaDB clients
[client]
#password=my_password
# The MariaDB server
[mysqld]
# Directory where you want to put your data
datadir=/data/mysql/
# Directory for the errmsg.sys file in the language you want to use
language=/usr/local/share/mysql/english
# This is the prefix name to be used for all log, error and replication files
log-basename=mysqld
# Enable logging by default to help find problems
general-log
log-slow-queries
7. systemd 서비스 등록
systemd로 서비스를 올리고 내릴 수 있도록 등록해준다. 원래는 직접 만들어줘야 하지만, 맨 처음에 다운받은 것에 이미 파일이 존재한다.(그래서 systemd 붙은 파일 받은 것을 추천했음)
cd /usr/local/mysql/support-files/systemd
cp mariadb.service /etc/systemd/system/ # mariadb.service
# 서비스 시작
systemctl start mariadb.service
# 시스템 시작 시 실행
systemctl enable mariadb.service
8. DB 접속 확인
드디어 끝났다. 설치 경로에서 아래와 같이 잘 나오면 성공이다.
cd /usr/local/mysql # 설치경로에서
bin/mysql -u root
9.(Optional) root 접속 패스워드 설정
# root 사용자의 패스워드 입력
mysqladmin -u root password '!abc10!'
댓글