본문 바로가기
DB 공부하기

230220_DB복습

by 보랏 2023. 2. 20.

안녕하세요. 보랏입니다.

오늘은 리눅스 서버를 통해 Python, MariaDB를 설치하고서 

해당 프로그램들을 리눅스에서 어떻게 사용하는지에 대해서 배웠습니다.

 

오늘은 그래서 제가 설치방법을 설명하기에는 

구글에 이미 다른 분들께서 잘 다루어주셔서 

저는 리눅스, putty, 네트워킹 관련 용어, python 연동 방법에 대해 정리하도록 하겠습니다. 

 

1. 리눅스 사용이유 

  • 무료 오픈소스로서 보안성을 계속 강화하였으며 다른 유료 운영체제를 사용해서 웹 서버를 운영한다고 해도 결국 보안상의 문제는 있기 때문에 무료 운영체제를 사용
  • 무료 오픈소스 운영체제이기 때문에 많은 버그와 바이러스가 발생했을 때 전부 사용자들에 의해 수정되고 픽스되었기 떄문에 리눅스는 충돌이 잘 발생하지 않음
  • 적은 리소스를 이용해 시스템을 효율적으로 이용 (리소스 소비가 낮으면 성능이 향상되고 하드웨어 요구 사항도 낮아지기 때문)
  • 오픈 소스이기 때문에 관리자가 직접 수정 및 최적화가 가능하여 서보 관리, 네트워킹 및 디스크 관리 등 사용자에게 최적화 가능

2. PuTTY

  • 가상 단말기 무료 오픈소스 프로그램
  • 서버는 원격으로 접속하여 작업이 필요한 경우가 많아 개인 pc 운영체제에서도 멀리 떨어져 있는 서버로 접속할 수 있도록 물리적인 단말장비가 아닌 가상 단말기를 제공
  • 접속 방식은 Telet, SSH, Rlogin등의 다양한 방법 제공

제가 생각한 요약 : 리눅스는 무료 오픈소스 운영체제로서 보안성이 강하고, 관리자에 맞게 최적화가 가능하여 리눅스 서버에 DB를 설치하고 PuTTY라는 가상 단말 원격 제어 프로그램을 통해 리눅스 서버를 관리 및 운영 

 

3. 리눅스 서버(centOS) 설치

  • 고정 ip 생성 (내 컴퓨터와 연결되는 ip주소 생성)
cd/etc/sysconfig/network-scripts # network-scripts 폴더 접속

vim ifcfg-enp0s8 -> IPADDR -> reboot -> restart session # 리눅스 서버 전용 ip주소 생성

yum install mariadb-server -y # DB설치

systemctl enable --now mariadb 
systemctl status mariadb  # 리눅스 실행시 MariaDB자동 실행

mysql_secure_installation # mysql setting
mysql -uroot -p

create user 'test'@'%'identified by '123'; #test 명칭의 유저 생성
grant all privileges on *.* to 'test'@'%'; #test유정에게 DB접근 권한 부여

여기까지 리눅스 서버에 MariaDB설치 및 유저생성, 권한 부여까지 진행방식입니다. 이제 컴퓨터(기존 운영체제 : Windows)와 리눅스서버를 연결하는 방화벽(Firewall) 네트워크를 port를 통해 연결이 필요합니다. 

이 때 MariaDB는 기본적으로 '3306' 포트를 사용합니다.

 

firewall-cmd --state # 현재 방확벽 상태 확인, running)
firewall-cmd --zone=public --add-port=3306/tcp --permanent # 방화벽 port에 3306port 추가
firewall-cmd --reload #재로딩
firewall-cmd --list-ports # 현재 등록되어 있는 port표시, 3306이 나와야함

이렇게 방확벽에 3306포트를 추가하여 컴퓨터와 리눅스 서버 MariaDB와 연동이 되었습니다.

다음은 컴퓨터에서 Python을 이용하여 리눅스서버 DB와 연결하는 코드입니다. 

import pymysql

try : 
	con = pymysql.connect(host = '192.168.56.101', user = 'test', password = '123', charest = 'utf-8')
    cur = con.cursor()
except Exception as e : 
	print("error")
    
cur.execute("create database play") # 연동된 db서버에 데이터베이스 생성

 

이제 파이썬에서 작업한 결과물이 DB서버에 적재하는 방법을 알아보도록 하겠습니다. 강사님께서 공유해주신 dataset3파일을 사용하여 파이썬에서 간단한 전처리 후 DB서버에 commit을 하였습니다. 

sql = "INSERT INTO test_1 VALUES(%s, %s, %s,%s,%s,%s,%s,%s)"

with open("./dataset3.csv", "r", encoding='utf-8') as f : 
    for idx, line in enumerate(f) : 
        if idx != 0 and idx < 110 : 
            cur.execute(sql, [x.replace('"', "") for x in line.split(";")])
            
con.commit()

cur.fetchall() # 109개행의 데이터 보유

 

4. 기타 네트워크 용어 

 

1) SSH (Secure SHell) 

  • 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해서 서로 통신을 할 때 보안적으로 안전하게 통신하기 위해 사용하는 프로토콜
  • 데이터 전송, 원격 제어 가능
  • AWS와 같은 클라우드 서비스는 인스턴스 서버에 접속하여 해당 머신에 명령을 내리기 위해서 SSH에 접속

참고 : https://url.kr/s9br2j

 

2) 인메모리 데이터베이스(In-memory Database)

  • 데이터 스토리지의 메인 메모리에 설치되어 운영되는 방식의 데이터베이스 관리 시스템
  • 메모리에 직접 접근하여 디스크에 최적화된 데이터베이스보다 더 빠르며 내부 최적화 알고리즘이 더 단순하며, 더 적은 CPU명령을 실행
  • 단, 메모리에 직접 접근하여 데이터베이스를 읽어 RAM의 휘발성으로 인해 전원 손실 등의 상황 발생 시, 데이터가 손실되게 됨

참고 : https://url.kr/hxc64e

 

이상으로 오늘 DB복습은 조금 일찍 작성하였습니다. 

마지막 시간에 복습시간을 주어 최대한 이 시간에 블로그 복습을 하고,

집에서는 다른 공부를 해볼려고 합니다.

 

그리고 주말에 던파 격투가(남)자료를 올린다고 하였는데,

다른 공부를 하느라 지쳐.... (죄송합니다.ㅠㅠㅠ)

최대한 빨리 올릴 수 있도록 하겠습니다.

 

감사합니다. 

 

'DB 공부하기' 카테고리의 다른 글

230222_DB복습  (0) 2023.02.22
230221_DB복습  (0) 2023.02.21
230217_DB복습  (0) 2023.02.17
230216_DB 복습  (0) 2023.02.16
230215_DB공부내용  (0) 2023.02.15