다음 내용을 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로 테스트
Comments