오늘은 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
mysql -u root -p
계정 생성은 [username]과 [host], [password]를 입력하여야 한다.
[host]는 외부접속을 하기 위해서는 %나 해당 호스트로 입력하여야 한다. (%는 모두 개방)
회사분이 퇴사해서 계정을 삭제해야하거나 프로젝트가 종료되서 삭제해야하는 등..
다양한 이유로 계정을 지울 필요가 생길 수 있다. 계정 삭제는 drop user을 사용하여 할 수 있다.
같은 유저라도 host에 따라 다르게 인식하기 때문에 유저 목록을 먼저 확인하고 지우는 것이 정확하다 할 수 있다.
특정 유저가 특정 DB에 접속할 수 있게 하려면 권한을 부여하여야 한다.
#MY SQL 내부 코드
#계정 생성
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는 아래와 같이 생성 및 조회 할 수 있다.
#MYSQL 내부 코드
#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.1을 bind-address=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