Contents
(MariaDB)MariaDB 설치 및 환경 구성, 테스트
   2022년07월13일     8분정도면 다 읽어요     - Comments

[카카오 클라우드 스쿨] CentOS에 MariaDB 설치, 환경 구성, 테스트 실습까지

MariaDB (1)

CentOS8에 MariaDB 설치, 초기셋팅

  • Block Storage: EBS
    • Storage 내에 Volume을 생성하고 생성된 볼륨을 서버에 연결하여 저장공간을 제공하는 방식
    • 서버의 위치가 달라지면 해당 볼륨을 사용할 수 없게 된다
  • Object Storage: S3
    • 일반적으로 사용자별로 일정 저장곤간을 제공하는 방식
    • 사용자의 위치와는 상관 없지만, 버킷의 이름은 유일해야 함


  • 이전 리눅스 설치: 자동 파티셔닝 -> 포맷 -> OS 설치
    • 지금은 수동으로 파티셔닝


  • SWAP: 가상 메모리, 디스크를 메모리처럼 쓸 수 있다
  • /BOOT: 부팅을 위한 커널이 존재
  • /cloud: 우리가 직접 만든 할당공간
  • /: 나머지 모든 것들이 들어감


1 . MariaDB 10.x 설치, 서비스 실행

[root@dblab ~]# yum -y install httpd
[root@dblab ~]# yum -y install curl git wget vim
[root@dblab ~]# wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
[root@dblab ~]# chmod +x mariadb_repo_setup
[root@dblab ~]# ./mariadb_repo_setup
[root@dblab ~]# yum -y install MariaDB-server
[root@dblab ~]# systemctl start mariadb && systemctl enable mariadb
[root@dblab ~]# systemctl disable firewalld --now


2 . 한글 가능하게 하기

[root@dblab etc]# cd /etc/my.cnf.d
[root@dblab my.cnf.d]# vi client.cnf
[root@dblab my.cnf.d]# vi mysql-clients.cnf
[root@dblab my.cnf.d]# vi server.cnf
  • client.cnf
...
[client]
default-character-set = utf8
...
  • mysql-clients.cnf
...
[mysqldump]
default-character-set = utf8
...
[mysql]
default-character-set = utf8
...
  • server.cnf
...
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = set names utf8
...


3 . 초기세팅

cd
[root@dblab ~]# mysql_secure_installation
root, test123로 설정

[root@dblab ~]# mysql -u root -p1234


4 . 혹시 모를 VMware 스냅샷을 찍어 두자

  • VMware 상단 탭에 take a snapshot!



아주 기본 SQL 쿼리문

  • create database [db명];
  • show databases;
  • use [db명];
  • show tables;
  • desc [테이블명];
  • insert into [테이블명] values (‘[내용]’,’[내용]’);
  • insert into [테이블명] ([칼럼명], [칼럼명]) values (‘[내용]’,’[내용]’);
  • select [칼럼명] as ‘[애칭]’, [칼럼명] as ‘[애칭]’ from [테이블명];
  • select * from [테이블명];



파이썬, 셸 스크립트로 DB 관리하기

  • python -> PyMySQL -> DBMS 이런 방식으로 접근할 것
  • DB 연결을 위한 정보
    • hostname, id, pwd, dbname
  • cursor: 연결자를 이용하여 DB에 접속하고 명령을 전달하기 위한 도구
  • commit: 입력된 데이터는 임시로 저장되므로, commit을 통해 저장할 수 있다
[root@dblab my.cnf.d]# pip3 install PyMySQL
  • 스크립트 파일 하나 만들기
[root@dblab ~]# touch dbconnect.py
  • 파이썬 경로 확인
[root@dblab ~]# which python3
/usr/bin/python3
  • dbconnect.py
#!/usr/bin/python3
import pymysql

# settings variables
HOST='211.183.3.111'
USER='root'
PWD='1234'
DB='testdb'
CHAR='utf8'

# connection
conn = pymysql.connect(host=HOST,user=USER,password=PWD,db=DB,charset=CHAR)

# cursor
cur = conn.cursor()

# create table with cursor
cur.execute("CREATE TABLE IF NOT EXISTS usertbl (id char(8), username char(20), email char(30), birthyear int)")

# insert data into table
cur.execute("INSERT INTO usertbl values ('user1','gildong','user1@test.com',1991)")

# commit
conn.commit()
  • 실행 권한 주고, 실행
[root@dblab ~]# vi dbconnect.py
[root@dblab ~]# chmod +x dbconnect.py
[root@dblab ~]# ./dbconnect.py
  • 잘 만들어 짐
MariaDB [testdb]> desc usertbl;
+-----------+----------+------+-----+---------+-------+
| Field     | Type     | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| id        | char(8)  | YES  |     | NULL    |       |
| username  | char(20) | YES  |     | NULL    |       |
| email     | char(30) | YES  |     | NULL    |       |
| birthyear | int(11)  | YES  |     | NULL    |       |
+-----------+----------+------+-----+---------+-------+
4 rows in set (0.006 sec)

MariaDB [testdb]> select * from usertbl;
+-------+----------+----------------+-----------+
| id    | username | email          | birthyear |
+-------+----------+----------------+-----------+
| user1 | gildong  | user1@test.com |      1991 |
+-------+----------+----------------+-----------+
1 row in set (0.001 sec)

  • 조회하는거 sh 생성 및 실행
[root@dblab ~]# touch dbcheck.sh
[root@dblab ~]# gedit dbcheck.sh
[root@dblab ~]# chmod +x dbcheck.sh
[root@dblab ~]# ./dbcheck.sh
+-------+----------+----------------+-----------+
| id    | username | email          | birthyear |
+-------+----------+----------------+-----------+
| user1 | gildong  | user1@test.com |      1991 |
+-------+----------+----------------+-----------+

  • dbcheck.sh
#!/bin/bash
mysql testdb -u root -p1234 -e 'SELECT * FROM usertbl'



데이터 추가해 두기

  • 사전에 만들어 둔 DB 복붙
[샘플 DB]
http://dw.hanbit.co.kr/mariadb/10.3/employees.zip


[실습용 DB]
DROP DATABASE IF EXISTS sqlDB;
CREATE DATABASE sqlDB;

USE sqlDB;
CREATE TABLE userTbl
( userID  	CHAR(8) NOT NULL PRIMARY KEY,
  name    	VARCHAR(10) NOT NULL,
  birthYear   INT NOT NULL,
  addr	  CHAR(2) NOT NULL,
  mobile1	 CHAR(3),
  mobile2	 CHAR(8),
  height    SMALLINT,
  mDate    DATE
);
CREATE TABLE buyTbl
(  num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
   userID  	CHAR(8) NOT NULL,
   prodName 	CHAR(6) NOT NULL,
   groupName 	CHAR(4),
   price     	INT  NOT NULL,
   amount    	SMALLINT  NOT NULL,
   FOREIGN KEY (userID) REFERENCES userTbl(userID)
);

INSERT INTO userTbl VALUES('LSG', N'이승기', 1987, N'서울', '011', '11111111', 182, '2008-8-8');
INSERT INTO userTbl VALUES('KBS', N'김범수', 1979, N'경남', '011', '22222222', 173, '2012-4-4');
INSERT INTO userTbl VALUES('KKH', N'김경호', 1971, N'전남', '019', '33333333', 177, '2007-7-7');
INSERT INTO userTbl VALUES('JYP', N'조용필', 1950, N'경기', '011', '44444444', 166, '2009-4-4');
INSERT INTO userTbl VALUES('SSK', N'성시경', 1979, N'서울', NULL  , NULL      , 186, '2013-12-12');
INSERT INTO userTbl VALUES('LJB', N'임재범', 1963, N'서울', '016', '66666666', 182, '2009-9-9');
INSERT INTO userTbl VALUES('YJS', N'윤종신', 1969, N'경남', NULL  , NULL      , 170, '2005-5-5');
INSERT INTO userTbl VALUES('EJW', N'은지원', 1972, N'경북', '011', '88888888', 174, '2014-3-3');
INSERT INTO userTbl VALUES('JKW', N'조관우', 1965, N'경기', '018', '99999999', 172, '2010-10-10');
INSERT INTO userTbl VALUES('BBK', N'바비킴', 1973, N'서울', '010', '00000000', 176, '2013-5-5');
INSERT INTO buyTbl VALUES(NULL, 'KBS', N'운동화', NULL   , 30,   2);
INSERT INTO buyTbl VALUES(NULL, 'KBS', N'노트북', N'전자', 1000, 1);
INSERT INTO buyTbl VALUES(NULL, 'JYP', N'모니터', N'전자', 200,  1);
INSERT INTO buyTbl VALUES(NULL, 'BBK', N'모니터', N'전자', 200,  5);
INSERT INTO buyTbl VALUES(NULL, 'KBS', N'청바지', N'의류', 50,   3);
INSERT INTO buyTbl VALUES(NULL, 'BBK', N'메모리', N'전자', 80,  10);
INSERT INTO buyTbl VALUES(NULL, 'SSK', N'책'    , N'서적', 15,   5);
INSERT INTO buyTbl VALUES(NULL, 'EJW', N'책'    , N'서적', 15,   2);
INSERT INTO buyTbl VALUES(NULL, 'EJW', N'청바지', N'의류', 50,   1);
INSERT INTO buyTbl VALUES(NULL, 'BBK', N'운동화', NULL   , 30,   2);
INSERT INTO buyTbl VALUES(NULL, 'EJW', N'책'    , N'서적', 15,   1);
INSERT INTO buyTbl VALUES(NULL, 'BBK', N'운동화', NULL   , 30,   2);

SELECT * FROM userTbl;
  • img_17