MariaDB 사용 방법

MariaDB 사용 방법

MariaDB 사용 방법에 대해 설명하는 페이지입니다.

Environment

  • OS: Raspberry Pi OS (64 bit)

목차

Step 1 - MariaDB 설치

패키지 업데이트

MariaDB를 설치하기 앞서 먼저 다음 명령어를 입력하여 먼저 기존의 패키지들을 업데이트합니다.

sudo apt update
sudo apt upgrade

MariaDB 설치

다음 명령어를 입력하여 MariaDB를 설치합니다.

sudo apt install mariadb-server

MariaDB의 설치 여부를 확인합니다.

sudo systemctl status mysql

mariadb1

Step 2 - MariaDB 설정

MariaDB 접속

MariaDB가 설치되면 다음 명령어를 입력하여 MariaDB에 접속합니다. 권한 문제로 접속이 제한될 수 있으므로 루트(root) 계정으로 접속합니다.

sudo mysql -u root

또는

sudo mariadb -u root

mariadb2

데이터베이스 조회

데이터베이스를 조회하면 다음과 같으 mysql 데이터베이스가 있음을 확인할 수 있습니다. 해당 데이터베이스는 계정 목록을 담고 있습니다.

show databases;

mariadb3

계정 조회

다음 명령어를 입력하여 계정 목록을 조회합니다.

use mysql;
select user, host, password from user;

mariadb4

계정 생성

루트 계정은 관리자 계정으로서 DB에 대한 모든 권한을 가지고 있습니다. 보통 실제 서비스에 사용되는 DB의 경우 DBA는 루트 계정을 사용하며, DBA 이외의 사용자들은 역할에 맞는 권한을 부여받아 사용합니다. 그러므로 용도에 맞는 계정을 생성하여 사용하는 것이 좋습니다. 계정 생성은 다음과 같이 create 명령어를 사용해서 계정을 추가할 수 있습니다. 사용자 부분에 자신의 계정명을, 비밀번호 부분에 자신의 비밀번호를 입력하면 됩니다.

# 내부 접근을 허용하는 계정 생성
create user '사용자'@'localhost' identified by '비밀번호';

# 외부 접근을 허용하는 계정 생성
create user '사용자'@'%' identified by '비밀번호';

# 특정 IP 접근을 허용하는 계정 생성
create user '사용자'@'123.456.78.90' identified by '비밀번호';

# 특정 IP 대역을 허용하는 계정 생성
create user '사용자'@'192.168.%' identified by '비밀번호';

예를 들어 계정명이 abc이고 비밀번호가 123이며 내부 접근만 가능한 계정은 다음과 같이 생성할 수 있습니다.

create user 'abc'@'localhost' identified by '123';

mariadb5

계정이 잘 생성되었는지 확인합니다.

mariadb6

새로 생성한 계정으로 접속

Ctrl + c을 눌러 MariaDB에서 빠져나온 후 새로 생성한 계정으로 접속합니다.

mysql -u 사용자 -p

mariadb7

권한 부여

새로 생성한 계정으로 접속해보면 접근 가능한 데이터베이스 목록이 한정되어 있음을 확인할 수 있습니다. 이는 계정에 따라 접근할 수 있는 데이터베이스, 테이블에 대한 권한이 다르기 때문입니다. 다음과 같이 루트 계정으로 접속해서 grant 명령어를 사용해서 계정마다 다른 권한을 부여할 수 있습니다.

# 모든 데이터베이스의 모든 테이블에 대해 모든 권한 부여
grant all privileges on *.* to '사용자'@'localhost';

# 데이터베이스 A 모든 테이블에 대해 모든 권한 부여
grant all privileges on A.* to '사용자'@'localhost';

# 데이터베이스 A 테이블 B 대해 모든 권한 부여
grant all privileges on A.B to '사용자'@'localhost';

# 데이터베이스 A 테이블 B 대해 select 권한 부여
grant select on A.B to '사용자'@'localhost';

# 데이터베이스 A 테이블 B 대해 select, insert 권한 부여
grant select, insert on A.B to '사용자'@'localhost';

# 데이터베이스 A 테이블 B column1, columne2 대한 update 권한 부여
grant update(column1, column2) on A.B to '사용자'@'localhost';

예를 들어 abc 계정에 대해 모든 데이터베이스에 대해 모든 권한을 부여하려면 다음과 같이 입력하면 됩니다.

grant all privileges on *.* to 'abc'@'localhost';

mariadb8

권한을 반영하려면 다음 명령어를 입력합니다.

flush privileges;

부여받은 권한을 확인합니다.

show grants for 사용자@localhost;

mariadb9

권한이 잘 부여되었음을 확인할 수 있습니다.

Comments