카테고리 없음

[Maria DB] 계정 생성/ 권한부여/ 외부접속/ 경로 변경

cj92 2021. 7. 3. 17:50

 

 

오늘은 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