본문 바로가기
DataBase/MySQL, MariaDB

[AWS] ubuntu에서 MariaDB 설치 및 기본 설정하기

by ojava 2021. 5. 14.
반응형

설정하는 김에 나중에 미래의 내가 참고하려고 쓰는 내용들

기본적으로 AWS는 프리티어로 제공하는 EC2를 가져다 쓰고 있으며, OS는 Ubuntu를 선택했고 기본적인 인스턴스를 생성한 뒤의 단계부터 진행하도록 한다. 

[참고정보]
Ubuntu version 18.04.5 LTS

ubuntu 버전 확인 방법 cat /etc/issue

 

1. DB 설치 전 timezone 설정 확인 및 변경

MariaDB를 설치하기 전 기본적으로 시스템 내에 설정된 timezone을 확인하자.

기본적으로 date 명령어를 치면 시간과 함께 뒤쪽에 설정된 timezone 정보가 나오게 되는데
UTC로 뜨게 되면 미국 시간 기준으로 설정되어있는 상태이다.

아래 명령어를 통해 timezone을 원하는 대상 (Asia/Seoul) 으로 변경해준다.
하나는 timezone 설정파일을 localtime으로 대체하는 방식이고, 하나는 명령어를 통해 대체하는 방식이니 둘 중 어느 방법을 선택해도 관계없다.

 sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 sudo timedatectl set-timezone 'Asia/Seoul'

뒤쪽에 UTC로 뜨던 내용이 KST로 바뀐걸로 확인되면 완료~

 

2. apt 명령어를 통한 MariaDB 설치

ubuntu에서 설치를 진행하기 위해서 apt 명령어를 사용하도록 하자.

apt는 Advanced Packaging Tool의 약자로 리눅스에서 패키지 관리를 위해 사용되는 툴이다.
파일을 다운받아서 filezila로 서버로 옮기고 이럴 필요 없이 해당 패키지 관리 명령어를 통해 다 설치가 가능하다.

우선 우리가 원하는 MariaDB 설치를 위해 관련 패키지 정보를 가지고 있는지를 확인해보자.

 

sudo apt list | grep maria

apt list 명령어를 쳐보면 알겠지만 너무 많은 데이터가 나오므로 grep을 통해 원하는 대상만 걸러서 보도록하자.
그리고 사실 있는지 여부 확인하는 것보다 최신화를 위해서 아래의 명령어를 수행해서 다운로드 받을 수 있는 패키지 목록을 변경하자.

 

sudo apt update && sudo apt-get -y upgrade

이 두 명령어는 따로 써도 된다. apt update를 통해 현재 OS에 설치 가능한 패키지와 그 정보를 업데이트하는 과정이다. update 명령어는 실제 설치는 진행하지 않고 설치가능 목록만 업데이트 한다고 보면 된다.
비교해서 upgrade 명령어의 경우는, 이미 설치된 패키지를 최신 버전으로 업그레이드 하는 명령어다. 

이 두 명령어를 함께 사용해서 설치 가능 대상을 최신화하고, 현재 설치된 대상 중 업그레이드가 가능한 대상이 있으면 업그레이드를 수행하는 절차를 한 번에 수행하게 된다.

 

sudo apt-get install -y mariadb-server

드디어 mariadb를 설치한다.
apt-get install을 통해 특정 패키지를 설치한다고 명령어를 보내면 드디어 설치 완료~~~~

 

반응형

 

3. 기본 설정 (DB툴에서의 접근을 위한 설정)

설치하면 끝! 이 아니라 이제 시작 ^_ㅜ
이제 본격적으로 DB툴에 붙어서 테이블도 만들고 뭐도 하고 뭐도하고 바쁠테니 한 번에 설정 작성합니다.

mysql -u root -p 로 들어가려고 보니 비밀번호 설정을 안했는데...? 싶다.

sudo mysql 로 접근해서 mysql 설정을 진행하자.

use mysql;

update user set password = password('설정할 비밀번호') where user='root';
flush privileges;

위의 설정을 통해 이제 mysql -u root -p 를 통해 비밀번호를 입력해서 예전처럼 접속이 가능해졌다.

 

root 계정만 쓸 순 없으니, 신규 계정을 만들고 해당 계정에 접근할 수 있는 대상에 대해 변경하는 작업을 진행하자.

create user '계정명'@'%' identified by '설정할 비밀번호';
create database 데이터베이스명;

# localhost에서만 쓰는 DB인 경우에는 localhost 접근으로 제한해도 관계없음
grant all privileges on 데이터베이스명.* to '계정명'@'localhost';

# 외부에서 접속이 필요한 계정이거나 접근 제한이 필요없는 경우는 %로 접근 대상을 확대 적용
grant all privileges on 데이터베이스명.* to '계정명'@'%';

flush privileges;

# 설정이 잘되었는지 확인해보기
select host, user from mysql.user;

 

이제 계정도 만들고 데이터베이스도 생성헀겠다, 무수한 쿼리들을 날리기 위해 DB Tool에서 직접 붙고 싶은데 관련한 설정을 추가해보자.

뜬금없이 시크한 mysql에 반해서 올림 Bye 비와이이~~

 

AWS EC2에 올려뒀기 때문에, 일단 EC2의 인스턴스 보안 설정에서 DB 접근을 위해 특정 포트를 TCP 설정을 추가해서 접근이 가능하도록 해줘야 한다. 기본적으로 Mysql 설정을 제공하나 이 경우 3306이 고정 포트로 되어있으므로, 별도의 TCP 포트를 추가해서 원하는 포트로 변경해줌이 좋다.

 

ubuntu에 설치한 mariadb의 설정값은 /etc/mysql/mariadb.conf.d/50-server.cnf 에 위치하고 있다.
편집기를 통해 접근해보자.

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

해당 파일에서 port 번호 설정이 가능하고, DB 접근 가능한 IP Address도 바인딩 할 수 있다.

추가로 테이블명과 컬럼명 등의 대소문자 구분을 하지 않도록 하는 설정도 추가하자.

lower_case_table_names = 1

다른 블로그에는 mysqld가 나오던데 나는 일단 안보여서 mariadb 영역 하단에 넣고 저장해도 되긴한다.
다만 기존에 이미 대문자로 만들어버린 테이블이 있다면 안보이게 되므로 ^_ㅜ 사전에 변환을 해줘야 한다.


설정값 변경 후에 저장하고 닫은 다음, 적용을 위해 mariadb를 재시작한다.

sudo systemctl restart mysqld 

 

[별첨] 이미 테이블이나 컬럼을 대문자로 만들어버린 나와 같은 사람들을 위해서 한 번에 변환하는 쿼리 만들기

select concat('rename table ', TABLE_SCHEMA, '.' ,TABLE_NAME, ' to ' , lower(TABLE_NAME) , ';') 
from information_schema.tables 
where table_schema = '변경 대상 데이터베이스명';

select concat('alter table ', TABLE_SCHEMA, '.' ,TABLE_NAME, ' CHANGE column ', column_name, ' ' , lower(COLUMN_NAME), ' ', COLUMN_TYPE, ';') 
from information_schema.columns 
where table_schema = '변경 대상 데이터베이스명';

 

 

 

여기까지가 기본 설정 완료
이제는 각자의 데이터베이스 설계 능력과 쿼리 구성 능력을 마음껏 뽐내는 시간 가지시길!

오늘도 모두의 정시퇴근을 기원합니다 ^0^

반응형