#1. MariaDB 설치하기

1. MariaDB의 개념

1) MariaDB란?

  • MariaDB는 MySQL에서 파생된 오픈소스 RDBMS(Relational Database Management System, 관계형 데이터베이스)이다.
  • 오라클이 썬마이크로시스템즈를 2010년에 72억 달러(약 8조)에 인수하면서 썬 마이크로시스템즈에 속해 있던 MySQL이 오라클 것이 됨에 따라 상업적으로 MySQL을 이용할 시 사용료를 내도록 정책이 변경되었다.
  • 이 정책에 반발한 MySQL 원 개발자의 핵심 창업자 중 한명인 몬티 와이드니어스가 2009년 동료들과 나와 MySQL의 소스코드를 기반으로한 오픈소스 RDBMS를 개발한 것이 지금의 MariaDB이다.
  • 즉, MySQL과 MariaDB는 기본적으로 사용방법이 동일하다.

 

2. DBMS 설치하기

1) 패키지 업데이트

  • root권한을 임대하여 업데이트 진행한다. (저장소와 관련된 인덱스를 업데이트)
$ sudo apt-get update

 

2) 프로그램 설치

  • root 권한을 임대하여 mariadb-server를 설치한다.
  • 중간에 묻는 질문에 답하기 귀찮을 때는 중간에 -y 명령어를 사용해서 설치한다.
$ sudo apt-get install -y mariadb-server

 

3) 설치된 버전 확인

  • MariaDB지만 명령어들은 MySQL을 그대로 따르고 있다. (아직까지는..)
$ mariadb -V
$ mysql -V

# V는 대문자를 사용한다.

명령어를 다르게 해도 같은 내용이 출력되는 것을 볼 수 있다.

 

4) MySQL 보안 설정

$ sudo mysql_secure_installation

 

- MySQL의 현재 root 비밀번호

  • 설치 초기 단계이므로 비밀번호가 없다.

엔터 누르고 진행.

 

- Unix 인증 방식 적용 여부

y 입력

 

- MySQL의 root 비밀번호 변경 여부

  • 원하는 비밀번호를 입력해준다.

y 입력 후 비밀번호 설정, 비밀번호 입력해도 안보이는게 정상

 

- 익명 사용자 계정 삭제 여부

  • 익명사용자라는 것은 비밀번호 없이 로그인 할 수 있는 사용자를 말한다. 보안에 안좋으니 삭제.

y 입력

 

- MySQL root의 원격 접속 비활성화

  • root에 원격 접속하는 것은 좋지 않기 때문에 비활성화.

y 입력

 

- 테스트 데이터베이스 삭제 여부

y 입력

 

- 설정 테이블 다시 로드하기

y 입력

 

5) MySQL 서비스 시작하기

  • 정상적으로 실행될 경우 아무런 결과가 표시되지 않는다.
$ sudo systemctl start mariadb

 

6) 정상 가동 여부 확인

 

7) 운영체제 부팅 시 서비스 자동 시작 등록

$ sudo systemctl enable mariadb

 

8) MySQL 접속 확인하기

$ mysql -uroot -p

리눅스에서 MySQL(MariaDB)에 접속

 

3. Database 복구하기

리눅스에서 MySQL에 정상적으로 접속되면 이전에 배운 FTP를 통해 sql 파일을 서버에 업로드하고 데이터베이스 복구 및 사용자 계정 생성을 진행한다.

 

1) 복구할 데이터베이스 생성

  • MySQL에 root 계정으로 접속한 상태에서 myschool 데이터베이스를 생성한다.
CREATE DATABASE myschool default charset utf8;

 

2) 데이터베이스 복구하기

  • exit 명령으로 MySQL과 접속을 해제하고 업로드한 sql 파일을 복원한다.
  • 복원할 파일이 FTP를 통해 서버에 업로드 되어 있어야 한다.
$ mysql -uroot -p DATABASE이름 < 백업파일경로

myschool 이라는 데이터베이스에 sql 파일을 삽입

 

4. 계정 설정

1) 사용자 계정 생성하기

  • 데이터베이스까지 복구했으면 MySQL에 root로 로그인 한 후 사용자 계정을 생성한다.
  • 보통 아이디는 데이터베이스 이름과 같게 지정한다.
create user '아이디'@'접근허용호스트' identified by '비밀번호';

※ 접근 허용 호스트 구분

호스트 설명
localhost 해당 사용자는 반드시 리눅스에 원격 접속을 한 상태에서만 MySQL을 이용 할 수 있다.
즉, MySQL 입장에서 local은 리눅스를 말한다.
특정 IP주소 리눅스로 원격 접속을 거치지 않고 지정된 IP를 사용하는 컴퓨터를 통해서 MySQL에 직접 접속이 가능하다.
% 로컬, 원격 구분 없이 어디서나 MySQL에 접속 가능하다.

실습이기 때문에 접근 허용 호스트를 '%'로 지정, 대부분 실무에서는 localhost로 사용한다.

  • 원격지에서 MySQL로 직접 접속이 가능하도록 지정된 경우, 리눅스에서 MySQL이 사용중인 포트번호에 대한 방화벽을 오픈해줘야 접속이 가능하다.

 

2) 데이터베이스에 대한 사용자 권한 부여하기

grant all privileges on 데이터베이스이름.* to '아이디'@'접근허용호스트';
  • 데이터베이스의 모든 테이블 (.*)을 허용

myschool 데이터베이스의 모든 테이블에 대해서 사용자의 접근권한을 부여

 

3) 데이터베이스에 대한 사용자 권한 제거하기

  • 사용할 일은 드물지만 사용자 권한을 제거하려면 아래의 명령을 사용한다.
revoke all on 데이터베이스이름.* from '아이디'@'접근허용호스트';

 

4) 생성된 계정으로 MySQL 로그인

  • exit 명령어로 MySQL에서 나온 뒤, 새로 생성한 myschool 아이디를 사용해 MySQL에 접속한다.

myschool 아이디로 정상 로그인 됐고, 테이블 조회도 정상적으로 된다.

 

5. MySQL 외부접속 설정

1) 포트번호 변경

  • 일반적인 실무 시스템에서는 보안상의 이유로 MySQL의 외부접속을 허용하지 않는다.
  • 기본 포트는 일반적으로 알려져 있기 때문에 보안에 불리하므로 임의의 포트로 변경해야한다.

- 설정파일 열기

$  sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

 

- 설정파일에 포트번호 옵션 추가

  • [mysqld] 섹션에 port = 포트번호 를 추가하고 파일을 저장한 후 vi를 종료한다.

  • bind-address 라는 설정항목을 찾아 0.0.0.0 으로 값을 수정한다.

기존에 있던 bind-address를 주석처리하고 0.0.0.0으로 지정

 

- 서비스 재시작

$ sudo systemctl restart mariadb

 

2) 방화벽에 포트번호 추가

  • 설정한 포트번호를 방화벽 허용 목록에 추가하고 방화벽을 다시 로드한다.
$ sudo ufw allow 9903/tcp
$ sudo ufw reload

 

3) 외부 컴퓨터에서 접속 확인

  • Windows, Mac 등의 호스트 컴퓨터에서 MySQL에 접속을 시도한다.
$ mysql -h리눅스아이피 -P포트번호 -u계정이름 -p

Mac의 터미널에서 다이렉트로 리눅스의 MySQL에 접근

 

6. MariaDB 삭제하기

1) 서비스 중지

$ sudo systemctl stop mariadb

 

2) 서비스 자동시작 등록 해제

$ sudo systemctl disable mariadb

 

3) MariaDB 완전 삭제

$ sudo apt-get purge -y mariadb*

 

4) 사이드 패키지 제거

$ sudo apt autoremove -y

 

5) MySQL 관련 파일들 리스트 확인

- 아래 명령을 수행하여 출력되는 항목이 없어야 한다.

  • dpkg: 매칭되는 모든 파일들을 시스템에서 검색한다.
$ dpkg -l | grep mariadb
$ dpkg -l | grep mysql

- 만약 출력되는 파일목록이 있다면 아래 명령으로 남아있는 파일들을 삭제한다.

$ sudo apt-get purge -y 파일명

 

6) 재시작

-삭제를 완료하기 위해서는 시스템 재시작이 필요하다.

$ sudo reboot

 

 

+ Recent posts