(MariaDB)MariaDB 설치 및 환경 구성, 테스트
[카카오 클라우드 스쿨] 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;