안녕하세요. 보랏입니다.
오늘은 리눅스 서버를 통해 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에 접속
2) 인메모리 데이터베이스(In-memory Database)
- 데이터 스토리지의 메인 메모리에 설치되어 운영되는 방식의 데이터베이스 관리 시스템
- 메모리에 직접 접근하여 디스크에 최적화된 데이터베이스보다 더 빠르며 내부 최적화 알고리즘이 더 단순하며, 더 적은 CPU명령을 실행
- 단, 메모리에 직접 접근하여 데이터베이스를 읽어 RAM의 휘발성으로 인해 전원 손실 등의 상황 발생 시, 데이터가 손실되게 됨
이상으로 오늘 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 |