MySQL 데이터 저장 디렉토리(datadir) 위치를 변경해서 설치하는 방법
개요
Ncloud(네이버 클라우드) 서버에 MySQL을 설치할 때 MySQL 데이터 저장 디렉토리(datadir) 위치를 변경해서 설치하는 방법을 정리해보겠습니다.
테스트 환경
- 서버: Rocky Linux 8.8
- DB: MySQL 8.0
MySQL 설치
아래와 같은 순서대로 MySQL 8.0 최신 버전을 설치합니다.
dnf -y upgrade-minimal
dnf -y install https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm
dnf module reset mysql
dnf module disable mysql
dnf -y install mysql-community-server
데이터 저장 디렉토리 생성
DB 데이터를 저장할 임의의 디렉토리를 생성합니다. /database/mysql 과 같이 생성하고 실제 저장되는 디렉토리는 mysql로 하겠습니다.
mkdir -p /database/mysql
디렉토리 소유권 변경
실제 저장되는 디렉토리인 [mysql]에 대한 소유권을 변경해야 하는데, 변경하기 전에 현재 상태를 확인해보면 아래와 같이 root:root로 되어 있는 것을 알 수 있습니다.
아래 명령으로 mysql 디렉토리에 대한 소유권을 mysql:mysql로 변경합니다.
chown -R mysql:mysql /database/mysql/
환경 설정 변경
환경 설정 파일 my.cnf 파일을 열어서 [mysqld] 항목에 있는 [datadir], [socket] 두가지의 설정을 위에서 생성한 [/database/mysql/] 디렉토리로 변경합니다. 그리고 아래쪽에 로컬에서 접속하기 위한 [client] 항목에 대한 [socket] 설정도 추가합니다.
vim /etc/my.cnf
# mysqld용 설정 변경 (위에서 생성한 디렉토리)
[mysqld]
datadir=/database/mysql
socket=/database/mysql/mysql.sock
# 선택사항: CharacterSet, Collation 설정 추가
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
skip-character-set-client-handshake
# 로컬에서 접속하기 위한 client 용 설정 추가
[client]
socket=/database/mysql/mysql.sock
# 선택사항: CharacterSet 설정 추가
default-character-set=utf8mb4
MySQL 초기화
아래 명령어로 기본 데이터베이스 생성 등의 초기화 작업을 진행합니다. 이때 위에서 생성한 [/database/mysql/] 디렉토리에서 초기화가 진행됩니다.
초기화 한 후에 디렉토리를 살펴보면 아래와 같이 기본 데이터 베이스 등이 정상적으로 생성된 것을 확인할 수 있습니다.
mysqld --initialize-insecure --user=mysql
ls -al /database/mysql
MySQL 데몬 시작
초기화를 마쳤으면 MySQL 데몬을 시작합니다.
systemctl start mysqld
MySQL 보안 설정
[mysql_secure_installation]은 MySQL의 기본 보안을 설정하는 명령으로, 설정되는 항목은 다음과 같습니다.
- root 계정 패스워드 설정
- 원격 호스트에서 root 계정 접속 차단
- 익명 계정 삭제
- 테스트 DB 등 삭제
mysql_secure_installation
MySQL 접속
위에서 설정했던 비번으로 접속해보면 [8.0.35 MySQL Community Server]인 것을 확인할 수 있습니다.
[show databases] 명령으로 데이터베이스를 확인해보면 기본 데이터베이스 등 각종 시스템 데이터베이스가 모두 정상적으로 나타나는 것을 알 수 있습니다.
mysql -u root -p
mysql> show databases;
테스트 DB 생성
데이터베이스 생성도 문제 없이 잘되는지 확인해보기 위해 [testdb]를 생성하고, 확인해보겠습니다.
mysql> CREATE DATABASE testdb;
mysql> show databases;
디렉토리 확인
변경해서 설치한 디렉토리에도 [testdb]가 제대로 생성되었는지 확인해보니 아래 화면처럼 정상적으로 생성된 것을 알 수 있습니다.
ls -al /database/mysql
참고 URL
-
MySQL Yum Repository 다운로드 페이지
https://dev.mysql.com/downloads/repo/yum/ -
Installing MySQL on Linux Using the MySQL Yum Repository
https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html -
Rocky Linux 서버에 MySQL 8.0 최신 버전 설치하는 방법
https://docs.3rdeyesys.com/docs/database/mysql-mariadb/install/mysql-8-latest-version-install-on-rocky-linux/
문서 업데이트 내역
날짜 | 내용 |
---|---|
2023-12-20 | 문서 최초 생성 |
2023-12-21 | CharacterSet, Collation 설정 내용 추가 |