오늘은 Maria DB 관련 세팅에 대한 포스팅을 해보고자 한다.

1. 유저 생성 및 삭제, 조회, 권한 부여
2. DB 만들기 및 외부접속
3. DISK 자동 마운트
4. DB 경로 변경

설치

먼저 방화벽 설정을 풀어보자. 방화벽을 구성하지 않았다면 해당작업은 필요하지 않다. Maria DB는 3306이 default port이다. 추가로 5900, 5800이 필요하여 port를 열었다.

sudo ufw allow 3306
sudo ufw allow 5900
sudo ufw allow 5800

MariaDB관련 패키지를 설치해보자.

apt-get install libmariadbclient-dev
sudo apt update && sudo apt-get -y upgrade
sudo apt-get install -y mariadb-server

유저 생성 및 삭제, 조회, 권한 부여

MariaDB 접속

mysql -u root -p

유저생성

계정 생성은 [username]과 [host], [password]를 입력하여야 한다.

[host]는 외부접속을 하기 위해서는 %나 해당 호스트로 입력하여야 한다. (%는 모두 개방)

회사분이 퇴사해서 계정을 삭제해야하거나 프로젝트가 종료되서 삭제해야하는 등.. 다양한 이유로 계정을 지울 필요가 생길 수 있다. 계정 삭제는 drop user을 사용하여 할 수 있다.

같은 유저라도 host에 따라 다르게 인식하기 때문에 유저 목록을 먼저 확인하고 지우는 것이 정확하다 할 수 있다.

특정 유저가 특정 DB에 접속할 수 있게 하려면 권한을 부여하여야 한다.

#계정 생성
create user '[username]'@'[host or %]' identified by '[password]';
create user 'user'@'%' identified by 'whckdwp1!@'; #예시

#계정 삭제
drop user 'user'@'%';

#유저 목록 확인
select user, host from mysql.user;

#권한 부여
grant all privileges on [database].* to '[username]'@'[host]';
grant all privileges on [DB].* to '[username]'@'[host]';

#MariaDB 권한 적용
flush privileges;

DB 만들기 및 외부접속

DB는 아래와 같이 생성 및 조회 할 수 있다.

#db 만들기
create database [db name];

#DB 확인
show databases;

#MariaDB 재시작
sudo service mysql restart

#encodng
SHOW VARIABLES LIKE 'char%';

SQL을 외부 접속 가능하게 하려면 아래와 같이 내용을 바꿔주어야 한다.

/etc/mysql/mariadb.conf.d/50-server.cnf 파일의 bind-address=127.0.0.1bind-address=0.0.0.0으로 변경 127.0.0.1localhost를 의미하며 0.0.0.0 은 모든 포트를 개방한다는 의미이다.

변경하고 서비스를 재시작하여야 반영이 됨을 유의하자.

#외부접속 
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address=127.0.0.1 -> bind-address=0.0.0.0
sudo service mysql restart

DISK 자동 마운트

DISK를 자동으로 마운트 하는 방법은 DB경로를 바꾸어 사용해야할 때 몹시 편할 것 같아 같이 포스팅 하였다.

자동 마운트

UUID를 조회 할 수 있는 방식은 blkid 와 ls -l /dev/disk/by-uuid 가 있다.

우리는 자동 마운트를 하기위해서는 Type 또한 입력해야 하므로 개인적으로는 blkid를 추천한다.

자동 마운트를 하기 위해서 /etc/fstab 파일 밑에 아래 내용을 추가하자.

#HDD UUID 조회
sudo blkid  
ls -l /dev/disk/by-uuid



#자동 마운트 설정
vi /etc/fstab
# db
UUID=[UUID]   [경로]       [type]     defaults        0       0

DB 경로 변경

먼저 DB 경로 변경을 위해서 서비스를 중지하여야한다.

#mysql 스크립트
  #DB 경로 조회
  mysql
  select @@datadir;

#mariadb 재부팅
systemctl stop mariadb

옮기고자 하는 경로에 폴더를 만들자.

만든 다음, Default 경로인 /var/lib/mysql/ 경로에서 모든 파일을 옮겨오고 옮긴 경로에 mysql 권한을 부여하자.

# 폴더 생성
mkdir -p /data/data/mysql

# 기존 DB 복제
cp -r /var/lib/mysql/* /data/data/mysql

# 권한 부여
sudo chown -R mysql:mysql /data/data/mysql
# mysql 서비스 종료
sudo service mysql stop

# 백업
cp -r /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.back

# config 파일 
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
datadir 수정
> /var/lib/mysql/ > /data/data/mysql

# 백업
sudo cp -r /var/lib/mysql /var/lib/mysql-back

# 기존 DB 제거
sudo rm -r /var/lib/mysql

# 링크 설정
sudo ln -s /data/data/mysql /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

# config 파일 수정을 통해 인식시키기
vi /etc/apparmor.d/tunables/alias
+ alias /var/lib/mysql/ -> /data/data/mysql/,
sduo /etc/init.d/apparmor reload
sudo service mysql start