create new virtual machine
centos8.iso 삽입
power on this virtual machine -> 체크 해제
number of processors: 1
number of cores per processors: 2
NAT: VMnet10
usb controller, sound card, printer -> 삭제
install centos stream 8-stream 선택
installation destination
-> Storage Configuration -> Custom 선택
(이전 리눅스 설치: 파티셔닝(자동 파티셔닝) -> 포멧 -> OS 설치)
swap -> 가상 메모리 -> 디스크를 메모리처럼 사용 -> 4096으로 설정
/boot -> 1024
/cloud -> 20 GB
/ -> add -> 나머지 공간은 모두 root
software selection -> server with GUI
network & host name -> configure -> connect auto with priority 체크
-> IPv4 -> Manual -> ip: 211.183.3.111, gw: 211.183.3.2
root password 설정
user creation -> username: user1 -> make this user admin 체크
time -> seoul
설치 완료 후 재부팅
화면보호기 끄기
settings -> power -> blank screen -> never
hostnamectl set-hostname dblab
su
-> 호스트네임 dblab으로 변경
ping www.google.com
-> 된다
yum -y install httpd
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
vi mariadb_repo_setup
-> version 10.3 으로 수정
chmod +x mariadb_repo_setup
-> 실행 권한 추가
./mariadb_repo_setup
yum -y install MariaDB-server
systemctl start mariadb && systemctl enable mariadb
한글 사용이 가능하도록 설정하기
cd /etc/my.cnf.d/
vi client.cnf
[client] 아래에
default-character-set = utf8 추가하기
vi mysql-clients.cnf
[mysql], [mysqldump] 아래에
default-character-set = utf8 추가하기
vi server.cnf
[mysqld] 아래에
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = set names utf8 추가하기
MariaDB 설치하기
cd
-> 홈 디렉토리로 이동
systemctl enable mariadb
systemctl start mariadb
mysql_secure_installation
enter current password for root: 엔터키
set root password?: 1234
이후 질문 모두 y
systemctl disable firewalld --now
-> 방화벽 끄기
mysql -u root -p1234
CREATE DATABASE testdb;
show databases;
데이터베이스에 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234';
FLUSH PRIVILEGES;
USE testdb;
[heidisql] 설정
hostIP: 211.183.3.111
testdb에 새로운 table 생성
name: id, name
datatype: varchar(20)
데이터 -> 우클릭 -> 행 삽입
id: user, name: 김철수
쿼리 확인: INSERT INTO testdb
.member
(id
, name
) VALUES ('user1', '김철수');
쿼리 실행
select * from member;
member 테이블 보임
[centos]
select * from member;
[heidisql]
데이터 -> 값 업데이트(김철수 -> 홍길동)
쿼리 확인: UPDATE testdb
.member
SET name
='홍길동' WHERE id
='user1' AND name
='김철수' LIMIT 1;
RDBMS는 데이터의 무결성을 보장받기 위하여 제약조건을 사용한다.
python3 - PyMySQL -> DBMS
연결자. DB 연결을 위한 정보 -> hostname, id, pwd, dbname
cursor는 연결자를 이용하여 DB에 접속하고 명령을 전달하기 위한 도구
입력된 데이터는 임시 저장된다. commit을 이용하여 저장할 수 있다.
[centos]
pip3 install PyMySQL
touch dbconnect.py
which python3
vi dbconnect.py
#!/usr/bin/python3
import pymysql
HOST='211.183.3.111'
USER='root'
PWD='1234'
DB='testdb'
CHAR='utf8'
conn = pymysql.connect(host=HOST, user=USER, password=PWD, db=DB, charset=CHAR)
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS usertbl (id char(8), username char(20), email char(30), birthyear int)")
-> user table이 없다면 table 생성
chmod +x dbconnect.py
-> 실행 권한 부여
./dbconnect.py
-> 실행
mysql -u root -p1234
use testdb;
show tables;
desc usertbl;
select * from usertbl;
vi dbconnect.py
cur.execute("INSERT INTO usertbl values('user1', 'gildong', 'user1@test.com', 1991)")
cur.execute("INSERT INTO usertbl values('user2', 'chulsoo', 'user2@test.com', 1992)")
conn.commit()
conn.close()
추가
./dbconnect.py
[MariaDB]
select * from usertbl;
vi dbcheck.sh
#!/bin/bash
mysql testdb -u root -p1234 -e 'select * from usertbl'
chmod +x dbcheck.sh
./dbcheck.sh
[heidisql]
테이블 값 바꾸기
gildong -> 홍길동
chulsoo -> 박철수
SELECT * FROM usertbl;
실행 버튼 -> 바뀐 것 볼 수 있음
SELECT username, email
FROM usertbl
WHERE username='박철수';
-> 박철수의 username과 email만 보임
index는 처리 속도를 향상시킬 수 있는 튜닝 기법 중 하나이며, 특정 열에 대하여 index를 부여하면 책의 뒷장에 특정 단어에 대한 페이지가 표시되는 것과 비슷한 원리를 이용하는 것이다.
[heidisql]
CREATE VIEW v_usertbl
AS
SELECT username AS '이름', email AS '이메일주소'
FROM usertbl;
실행 -> v_usertbl 생성되었음
[MariaDB]
show tables;
select * from v_usertbl;