본문 바로가기

개발/DB

[MariaDB] 셋팅 및 dump 정리

작성한 순서대로 한 거 아니고 걍 따로 작업했던 거 따로따로 정리한 것임

 

● 설치

* root 권한이 아니어서 다 sudo로 권한 끌어와서 진행 함

 

1. mariadb repository setting

$ sudo vi /etc/yum.repos.d/MariaDB.repo 에 아래 내용 저장

(버전에 따라 쪼금씩 내용이 다른데, mariadb 홈페이지 드가서 repository 부분 보면 하단 내용 다 있음)
# MariaDB 10.5 CentOS repository list - created 2022-11-03 07:15 UTC
https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://tw1.mirror.blendbyte.net/mariadb/yum/10.5/centos7-amd64
gpgkey=https://tw1.mirror.blendbyte.net/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

2. mariadb 다운로드
$ sudo yum install MariaDB

 

- 다운로드 후 $ rpm -qa | grep MariaDB 하여 결과 확인
MariaDB-common-10.5.18-1.el7.centos.x86_64
MariaDB-client-10.5.18-1.el7.centos.x86_64
MariaDB-server-10.5.18-1.el7.centos.x86_64
MariaDB-compat-10.5.18-1.el7.centos.x86_64


- 다운로드 후 $ mariadb --version 으로 버전 확인
mariadb  Ver 15.1 Distrib 10.5.18-MariaDB, for Linux (x86_64) using readline 5.1

3. mariadb 시작
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

 

● 외부 접속 허용

사용할 database 셋팅 - 우리는 mysql 설정을 건들거기 때문에 mysql로 셋팅

MariaDB [(none)]> use mysql;

MariaDB [(mysql)]> show tables;

전체 테이블 목록을 보면 이것저것 있는데 user가 있을 거임

user의 접속 허용에 대해 변경을 할 예정이니 우선 어케되어 있는지 확인해보기

SELECT HOST, USER FROM USER;

이런식으로 유저는 추가 할 수 있고

MariaDB [mysql]> insert into mysql.user(host, user, ssl_cipher, x509_issuer, x509_subject, authentication_string) values ('%', 'root', '', '', '', password('패스워드'));

 

root로 접속했을 때에는 어디서 어떤 아이피로 접속하든 모든 데이터베이스와 테이블에 접속 가능하도록 설정MariaDB [mysql]> grant all privileges on *.* to 'root'@'%' identified by '패스워드';

 

▶ *.* 에서 앞에 *은 DB, 뒤의 *은 TABLE명임 [DB].[TABLE]

ex) grant all privileges on test_database.some_table to 'root'@'%';

'root'@'%'에서 앞의 root는 user이고, 뒤의 %는 host이다.

ex) grant all privileges on test_database.some_table to 'newuser1'@'111.222.%';

 = 111.222.로 시작하는 ip로 접속한 newuser1 계정을 사용하는 user는

test_database 데이터베이스의 some_table이라는 테이블에 접속 가능

 

그리고 끝에는 항상 이제까지 변경사항 커밋을 위해 FLUSH PRIVILEGES 해주기

MariaDB [mysql]> FLUSH PRIVILEGES;

 

● 덤프 뜨고 풀기

뜨기: $ mysqldump -u root -p 덤프 뜰 데이터베이스 명 > 덤프 파일 이름.sql
풀기: $ mysql -u root -p 덤프 부을 데이터베이스 명 < 덤프 파일 이름.sql

※ 전에 작업할 때 풀 때에도 mysqldump로 명령어 잘못치고는,

덤프 작업이 주석만 하고 completed 되버리길래 뭐지? 했는데

풀 때에는 mysql 임!! 확인 필요

 

● my.cnf 설정

기본적으로 db는 stop 시켜놓고 진행하자

$ systemctl stop mariadb

그리고 보통 설치에 따라 조금씩 경로는 다르지만

내 경우에는 $ vi /etc/my.cnf 로 my.cnf 열어서 셋팅함

 

[mysqld]
default-time-zone='Asia/Seoul'
default-storage-engine=InnoDB
init-connect='SET NAMES utf8mb4'
lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

 

(나는) 기본적으로 다른 셋팅 없이 기본으로 이것만 하는데

혹시 default-time-zone 셋팅했다가 

: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)

에러 뜬다면 

$ systemctl status mariadb 해서 오류 내용 확인하고

혹시 Illegal or unknown default time zone 'Asia/Seoul' 에러가 보인다면

$ mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql -p

명령어를 쳐서 서버 내에 있는 타임존을 mysql에도 적용해주는데

여기서 | mysql -u root mysql << 이거 데이터베이스 이름이라서 빼면 안됨

(나는 헷갈려서 잘 모르고 빼버렸다가 정상 작동 안해서 한참 고생함)

이러고도 안되면 

$ mysql_tzinfo_to_sql /usr/share/zoneinfo/Asia/Seoul KST

이것까지 해주니까 나는 잘 됐음

그리고 db서버 재기동

$ systemctl start mariadb

반응형