• 김영찬

MariaDB(MySQL) 설치하기

다음 내용을 Linux(CentOS)에서 MariabDB DBMS를 설치하는 방법을 설명합니다. MySQL과 MariaDB도 거의 동일한 절차를 거칩니다.(설치후 초기화만 다름)


아래 내용은 MariaDB 10.7.1을 기준으로 하나 yum.mariadb.org 사이트에서 다른 버전을 확인하여 설치할 수 있습니다.



/ MariaDB 삭제

  • yum list installed mariadb* // 설치된 mariadb 패키지 목록 표시

  • yum remove -y MariaDB* // 설치된 모든 MariaDB 패키지 삭제



// MariaDB yum repository 설정

  • yum.mariadb.org에서 최신 버전 확인, repository URL 확인

  • 아래와 같이 local yum repository에 최신 버전 MariaDB yum directory 설정 및 다운로드

  • 이렇게 하지 않으면 다른 버전이 설치됨(혹은 이 정보로 local repository 구성)

// /etc/yum.repos.d/MariaDB.repo 파일 등록(mariadb.org로 부터 설치)

  • [mariadb]

  • name = MariaDB

  • baseurl=http://https://yum.mariadb.org/10.7.1/centos/7/x86_64/

  • gpgkey=http://yum.mariadb.org/RPM-GPG-KEY-MariaDB

  • gpgcheck=1

  • baseurl의 모든 내용을 local repository server의 MariaDB 폴더로 복사한뒤 repo 파일 구성도 고려

// yum repolist | grep MariaDB // repositroy에 MariaDB가 있는지 확인

// yum install MariaDB // 위의 MariaDB.repo에서 name으로 설정한 이름이 와야함. mariadb로 하면 안됨

Dependencies Resolved

========================================================================================

Package Arch Version Repository Size

========================================================================================

Installing:

MariaDB-compat x86_64 10.6.4-1.el7.centos mariadb 2.2 M

replacing mariadb-libs.x86_64 1:5.5.68-1.el7

MariaDB-devel x86_64 10.6.4-1.el7.centos mariadb 8.1 M

replacing mariadb-devel.x86_64 1:5.5.68-1.el7

MariaDB-server x86_64 10.6.4-1.el7.centos mariadb 25 M

Installing for dependencies:

MariaDB-client x86_64 10.6.4-1.el7.centos mariadb 14 M

MariaDB-common x86_64 10.6.4-1.el7.centos mariadb 81 k

galera-4 x86_64 26.4.9-1.el7.centos mariadb 9.6 M

libpmem x86_64 1.5.1-2.1.el7 base 59 k

socat x86_64 1.7.3.2-2.el7 base 290 k

Transaction Summary

========================================================================================

Install 3 Packages (+5 Dependent packages)

// MariaDB 설치 파일 다운로드

  • yum install --downloadonly --downloaddir=/root/mariadb MariaDB-server.x86_64

  • 외부망에서 다운로드한 rpm 패키지로 내부망에 Local Repository 구성 및 설치(위의 dependancy 목록에서 역순으로 설치)

  • rpm 설치 : rpm -ivh [rpm 파일]

  • rpm 업데이트 : rpm -Uvh [rpm 파일]

  • rpm 설치 확인 : rpm -qa | grep MariaDB

// MariaDB 설치 정보 확인

  • rpm -qa | grep MariaDB

  • MariaDB-common-10.6.4-1.el7.centos.x86_64

  • MariaDB-devel-10.6.4-1.el7.centos.x86_64

  • MariaDB-client-10.6.4-1.el7.centos.x86_64

  • MariaDB-compat-10.6.4-1.el7.centos.x86_64

  • MariaDB-server-10.6.4-1.el7.centos.x86_64

// MariaDB 데몬 실행 및 서비스 등록

  • systemctl start mariadb

  • systemctl enable mariadb

  • systemctl status mariadb

  • netstat -anp | grep 3306 // 3306 포트에 실행중인지 확인

// MariaDB 서버가 실행되지 않는 경우 원인 파악 방법

  • tail -f /var/log/messages // 실시간으로 서버의 로그 메시지

  • journalctl -xe // 실패한 서버스의 로그 메시지

  • systecmctl status mariadb.service // mariadb 서버스의 상태

// MariaDB 방화벽 포트 설정(기본 포트 3306)

  • firewall-cmd --permanent --add-port=3306/tcp

// MariaDB root 비밀번호 변경

  • /usr/bin/mysqladmin -u root password '비밀번호' // 입력한 '비밀번호'로 변경

// MariaDB client mysql 접속 및 정상 설치 테스트

  • mysql -u root -p // 변경한 비밀번호로 MariaDB Client 실행

  • mysql -h localhost -u root -p -Dmysql // 변경한 비밀번호로 MariaDB Client 실행

  • MariaDB > show databases;

  • MariaDB > use mysql;

  • MariaDB > show tables;

// 초기 불필요 계정 삭제

  • MariaDB > select host, user, password from user;

  • MariaDB > delete from user where password=''; // 필요시 불필요한 계정 삭제

// MariaDB 설정 및 Characteret 변경(Cloudera CDP는 utf8, 일반 개발은 utf8mb4로 설정)

  • mysql -u root -p

  • MariaDB > SHOW VARIABLES LIKE 'char%'; // 현재 characterset 설정 확인

  • MariaDB > status

  • /etc/my.cnf에 다음 내용 설정(정밀 설정은 CDP 설치 - CDP Prerequsite MariaDB 설치 참조)

# Mariadb General Settings

[mysqld]

default_storage_engine=innodb

skip-character-set-client-handshake

init-connect="SET collation_connection = utf8mb4_unicode_ci"

init-connect="SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

lower_case_table_names=1

# Mariadb General Settings

[client]

port=3306

default-character-set = utf8mb4

# Mariadb General Settings

[mysqldump]

default-character-set = utf8mb4

# Mariadb General Settings

[mysql]

default-character-set = utf8mb4

// MariaDB(MySQL) Characterset 관련 변수

  • character_set_system (설정 불가능 변수) MySQL 서버가 Identifier를 저장할 때 사용하는 Character set이며, 이 값은 섧정 불가능하고 항상 utf8로 설정되어 있다

  • character-set-server MySQL 서버의 기본 Character set

  • character_set_client MySQL 클라이언트의 기본 Character set

  • character_set_connection 쿼리 문장에서 인트로듀서가 없는 리터럴 또는 Number를 String으로 변환할 때 사용하는 Character set

  • character_set_database MySQL 데이터베이스의 Default Character set

  • character_set_filesystem LOAD DATA INFILE ... 또는 SELECT ... INTO OUTFILE 문장이 실행될 때, 파일의 읽고 쓰기에 사용되는 Character set

  • character_set_results MySQL 서버가 쿼리의 처리 결과를 클라이언트로 보낼 때 사용하는 Character set

// MariaDB 데몬 재실행

  • systemctl restart mariadb

  • systemctl status mariadb

  • mysql -u root -p

  • MariaDB > SHOW VARIABLES LIKE 'char%'; // 현재 characterset 설정 확인

  • MariaDB > status

  • characterset 설정 재 확인

// MariaDB Secure Installation

  • /usr/bin/mariadb-secure-installation 실행

  • 아래 항목을 'Y'로 설정 // 나머지는 n로 설정(

Remove anonymous Users ? Y, Disallow root login remotely ? Y, Remove test database ? Y, Reload privileage tables ? Y

  • mysql의 경우 /usr/bin/mysql_secure_installation으로 이름이 다름

// DB 사용자 생성

  • CREATE USER '[user_name]'@'%' IDENTIFIED BY 'password'; // 비밀번호를 갖는 계정 생성

CREATE user 'movie'; set password for 'test' = password('test00');

CREATE user 'movie'@'%' identified by 'test00';

  • CREATE USER '[user_name]'@localhost IDENTIFIED VIA mysql_native_password; // 비밀번호 보안 인증 방식의 계정 생성

  • CREATE USER '[user_name]'@'127.0.0.1' IDENTIFIED VIA unix_socket USING 'invalid'; // unix_socket 보안 인증 방식의 계정생성

  • CREATE USER '[user_name]'@'%' IDENTIFIED VIA unix_socket OR mysql_native_password USING 'invalid'; // 둘다 사용, 모든 IP 접근 허용

CREATE USER 'movie'@'localhost' IDENTIFIED VIA mysql_native_password;

  • use mysql // 직접 System Table에 등록하는 방법

  • insert into user(host, user, password) values('localhost', 'hadoop', password('futuresoft#00')); // CREATE 문 대신에 직접 사용자 생성

// 생성한 MariaDB 사용자 계정의 상태 확인

  • select host, user, password, plugin from mysql.user;

// DB 계정 비밀번호 설정select

  • select user(); // 로그인한 계정을 확인

  • set password = password('12345678'); // mysql 로그인 계정의 암호 설정

  • set password for [user_name]@'[ip]' = password('12345678'); // 다른 계정의 비밀번호를 설정

  • set password for 'movie'@'localhost' = password('test00');

// 사용자 삭제

  • drop user test; // host가 '%'인 경우

  • drop user 'movie'@localhost; // host가 지정된 경우

// DATABASE 생성

  • MariaDB > create database 'database name' default character set utf8mb4;

  • MariaDB > create database movielens default character set utf8mb4;

  • MariaDB > create database movielens;

  • MariaDB > show databases;

// Database에 사용자 권한 설정

  • MariaDB > grant all privileges on 'database name'.* to '계정명'@'%' identified by '계정비밀번호';

  • MariaDB > grant all privileges on *.* to \[user_name]'@'[ip]';

  • MariaDB > grant all privileges on hadooptest.* to 'hadoop'@'localhost';

  • MariaDB > grant all privileges on movielens.* to 'movie'@'%'; // movielens database에 대한 모든 권한을 movie 계정에 부여

  • mysql -u movie -D movielens -p; // movie 사용자로 로그인해서 movielens 데이터베이스 사용

// 사용자 계정 정보 변경시 재시작 없이 reload

  • MariaDB > flush privleges;

// 계정을 삭제

  • drop user '[user_name']'@'[ip]';

  • drop user test1;

  • drop user 'hadoop'@localhost;

  • drop user 'movie'@'%';

// 원격 서버에 MySQL client(mysql) 설치

  • yum install mariadb // mysql utility 설치

  • mysql -h cms.futuresoft.co.kr -P 3306 -u oozieuser -ppassword -D oozie로 테스트

조회수 2회댓글 0개

최근 게시물

전체 보기