Mac 과 Windows 에 MySQL (MariaDB) 설치하기

⏱ 5 분

DBMS (Database Management System)

IT (Information Technology) 는 데이터를 가공해 사용자에게 유용한 정보를 제공하는 기술입니다. 따라서 데이터와 정보를 저장하는 DB 와 DB 를 관리하는 DBMS 야말로 IT의 기본이라고 할 수 있습니다. 스프링부트를 더 알아보기 전에 DB 구축을 하기 위한 DBMS 설치 및 설정을 알아보겠습니다.

MySQL & MariaDB

MySQL MariaDB

MySQL은 독보적인 인기와 점유율을 가지고 있는 오픈소스 DBMS 였습니다. 그런데 SUN에 인수되고 오라클이 또 SUN을 인수하면서 지금은 상용 버전과 GPL 라이선스를 가진 커뮤니티 버전으로 나뉘어져 있습니다.

오라클은 점유율 1위의 자체적인 상용 DB 를 가지고 있기 때문에 MySQL 출신 개발자들이 나와서 MySQL을 기반으로 MariaDB 라는 DBMS를 만들었습니다. MariaDB 는 MySQL의 기반이기 때문에 MySQL 과 호환이 되고, 거기에 계속해서 업데이트를 하고 있습니다. MySQL 의 상위호환이 목표라고 할 수 있겠죠. DB 랭킹을 살펴보면 MariaDB의 점유율이 계속해서 높아지는 걸 볼 수 있습니다.

Mac에서 MariaDB 설치하기

이번 포스트에서는 MariaDB 로 진행해보겠습니다. Mac에서는 homebrew를 이용하면 쉽게 설치할 수 있습니다. 터미널에서 간단하게 설치가 가능하죠.

다운로드

1
2
brew update
brew install mariadb

설치

1
2
unset TMPDIR
mysql_install_db

실행

1
mysql.server start

서버 상태 확인

1
mysql.server status

Windows에서 MariaDB 설치하기

다운로드

홈페이지 에서 zip 파일을 다운받아 압축을 풉니다.

설치

1
mysql_install_db.exe --datadir=C:\db --service=MyDB --password=secret
  • --datadir: 데이타 파일 경로
  • --service: MariaDB를 서비스로 등록할 이름
  • --password: 접속 비밀번호

실행

설정한 서비스 이름으로 시작합니다.

1
sc start MyDB

접속하기

처음에는 root 계정으로 접속합니다.

1
mysql -uroot

데이터베이스 조회

1
SHOW DATABASES;

MySQL/ MariaDB 초기 설정

사용하기 전에 몇 가지 설정이 필요합니다.

UTF-8 설정하기

한글이 깨지지 않고 잘 나오게 하려면 기본적인 character encoding 설정을 utf-8으로 변경해야 합니다. /etc/my.cnf 파일을 만들고 다음 내용을 작성합니다. DBMS를 재시작하면 적용됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

init_connect=SET collation_connection=utf8_general_ci
init_connect=SET NAMES utf8

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

DB 생성하기

TESTDB 라는 이름으로 테스트용 DB를 만들어봅시다.

1
CREATE DATABASE TESTDB;

잘 만들어졌는지 확인해보겠습니다.

1
SHOW DATABASES;

계정 설정하기

root 계정은 시스템 계정이므로 테스트할 DB 인 testdb만 사용 가능하도록 개발용 계정을 만들어야 합니다. 먼저 root 계정으로 접속을 합니다.

1
mysql -u root

먼저 mysql 이라는 서버로 변경합니다.

1
2
3
4
5
$ MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql 데이터베이스의 user 테이블을 조회하면 사용자 목록을 볼 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
$ MariaDB [mysql]> SELECT User, Host from user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| debian-sys-maint | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

localhost로만 접속 가능한 dev 사용자를 만들어봅시다. 비밀번호는 ‘init0000’ 으로 했는데 원하시는 비밀번호로 하시면 됩니다.

1
2
$ MariaDB [mysql]> CREATE USER dev@localhost IDENTIFIED BY 'init0000';
Query OK, 0 rows affected (0.00 sec)

dev@localhost 계정에 TESTDB의 테이블에 대한 권한을 부여합니다.

1
2
$ MariaDB [mysql]> GRANT ALL PRIVILEGES ON testdb.* TO dev@localhost;
Query OK, 0 rows affected (0.00 sec)

권한 조회를 통해 확인할 수 있습니다.

1
2
3
4
5
6
7
8
$ MariaDB [mysql]> show grants for dev@localhost;
+------------------------------------------------------------------------------------------------------------+
| Grants for dev@localhost |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dev'@'localhost' IDENTIFIED BY PASSWORD '*16B7154F725D3F83A3C7F5543E0EF82C5AFF0FF5' |
| GRANT ALL PRIVILEGES ON `testdb`.* TO 'dev'@'localhost' |
+------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

이제 dev 계정으로 접속해봅시다.

1
mysql -u <username> -p <password>

여기서 패스워드 입력하지 않고 -p 만 입력하면 패스워드 입력하라고 한번 더 나오니까 그 때 입력하셔도 됩니다.

1
2
3
4
5
6
7
8
9
$ handonghoui-MacBook-Pro:etc handongho$ mysql -u dev -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 10.1.14-MariaDB Homebrew

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

로그인한 후, 데이베이스를 조회해보면 TESTDB 를 확인할 수 있습니다.

1
2
3
4
5
6
7
8
9
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| TESTDB |
| information_schema |
| test |
+--------------------+
3 rows in set (0.00 sec)

이제 테이블을 만들고 다른 애플리케이션을 통해 활용하면 되겠습니다. 다음 포스트에서는 스프링부트 에서 JPA 를 이용해 DB와 연결하고 데이터 다루는 방법을 살펴보겠습니다.

스프링 부트 (Spring Boot) 로 시작하는 프레임워크 (Framework)