개발자/라즈베리파이4

라즈베리파이4 기반 AI IoT 가이드 7강 Maria DB 기본

지구빵집 2020. 7. 31. 09:03
반응형

 

MariaDB란?

MariaDB는 MariaDB사가 제작한 오픈소스 RDMBS (관계형 데이터베이스 관리 시스템 relational database management system, RDBMS) 소프트웨어입니다. MariaDB가 무엇인지 알기 위해서는 MySQL이란 유명 RDBMS를 알아야 합니다. 왜냐하면 MySQL에서 떨어져 나온 RDBMS가 MariaDB이기 때문이죠. AB사 핵심 창업자 중 한 명이었던 몬티 와이드니어스가 2009년 동료들과 나와 MySQL코드 기반으로 한 오픈소스 RDBMS를 개발한 것이 지금의 MariaDB입니다. 상용으로 사용하기 위해서 돈을 내야 하는 MySQL과 다르게 (교육용, 개발용은 상관없음) MariaDB는 무료로 사용할 수 있습니다.

MariaDB 특징

오픈소스 MySQL도 상업적인 용도를 제외하고는 교육, 개발용인 커뮤니티 버전은 무료로 제공하고 있습니다. 하지만 커뮤니티 버전은 실제 서비스에 사용하기에는 성능이 따라주질 않죠. 하지만 MariaDB는 상업용을 사용해야 더 좋은 성능을 내는 그런 개념없이 무료로 모든 기능을 사용할 수 있습니다.

MySQL 친화적인 RDBMS MySQL에서 Fork된 RDBMS인만큼 MySQL과 친화적이기 때문에 마이그레이션할 때도 손쉽게 진행할 수 있습니다. 실제로 MySQL에서 사용하고 있는 SQL문이나 명령문들을 그대로 MariaDB에서 채택하고 있는 경우가 많습니다.

MySQL 코드 베이스지만 MySQL과는 독립적인 RDBMS InnoDB와 같이 MySQL RDBMS에서 어떤 플러그인 형태로 끼웠다가 빼서 쓸 수 있는 것이 아닌 그 자체로 독립적인 RDBMS라는 것을 의미합니다. 또한 RDBMS에서 Fork 되었지만 이제 MySQL에서 제공하지 않는 독자적인 기능 및 구문을 제공하고 있다는 것이기도 합니다. (내용 출처: 새로비 MariaDB 소개)

Maria DB 설치

다른 프로그램을 설치할 때 언제든지 아래 두 개의 명령어를 먼저 실행하는 습관을 추천합니다.

명령은 

$sudo apt-get update
$sudo apt-get upgrade 

 

$sudo apt-get update #설치 되어있는 패키지들의 새로운 버젼이 있는지 확인할 때 해당 명령어를 사용합니다.
$sudo apt-get upgrade #위에 있는 apt-get update를 통해서 확인한 패키지들의 최신 버전에 따라서 패키지들의 버전을 업그레이드 해주는 명령어입니다.

maria DB 설치명령은 

$ sudo apt-get install mariadb-server mariadb-client

 

설치할 때 질문에는 'y'로 넘어가고 최초 설치에서는 root 계정에 대한 비밀번호 설정을 두차례 거치게 됩니다. 설정 비밀번호 한번, 비밀번호 재확인 한번 이렇게요. 잃어버리지 않게 꼭 적어두시기 바랍니다. 

접속은 

$sudo mysql -uroot

 

접속 화면

$ mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 143
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

 

현재 데이터베이스 목록보기

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.02 sec)

 

mariadb 종료하기

MariaDB [mysql]> exit;
Bye
$

 

테이블리스트 보기

MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
...
| user                      |
+---------------------------+
24 rows in set (0.00 sec)

 

패스워드 변경

패드워드 변경시에는 아래와 같이 변경해 준다. 어떤 사용자의 비밀번호를 바꿀지는 -u {사용자명} 옵션에 의하여 결정되고, 사용하던 이전 비밀번호가 있는 경우에는 이전 비밀번호를 입력해야 하므로 -p 옵션을 준다. 그리고 비밀번호를 바꾸는 작업을 수행할 것이므로 password 라는 mysqladmin 의 하위 명령어를 입력해 준다. 

$ mysqladmin -u root -p password
Enter password: (old password)
New password: (new password)
Confirm new password: (new password)

 

등록된 사용자 확인

현재 MySQL 에 등록된 사용자들을 보려면 mysql 에 접속하여 확인하면 된다. mysql 데이터베이스의 user 테이블에 사용자들의 정보를 담고있는 테이블을 조회해보면 된다. 

$ mysql -u root -p
Enter password:

MariaDB [(none)]> select Host,User from mysql.user;
+-----------+--------+
| Host      | User   |
+-----------+--------+
| 127.0.0.1 | root   |
| ::1       | root   |
| localhost |        |
| localhost | root   |
| sirna1    |        |
| sirna1    | root   |
+-----------+--------+
6 rows in set (0.00 sec)

 

참고: MySQL 데이터 디렉토리 구조

데이터베이스가 저장되는 파일의 위치는 어디일까? MySQL 설정 파일인 /etc/my.cnf 를 들여다 보면 있다. 앞 부분의 datadir 에서 데이터의 경로를 지정하고 있다. 

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

 

db 를 생성하게 되면 다음과 같이 폴더가 생기고 그 아래에 데이터가 저장된다.
/var/lib/mysql/flasknote 

파이선과 Maria db 연동하기(mysql, mariadb) 

Python에서 database를 사용할 수 있는 방법은 여러가지가 있지만, 그 중에서 mysql이나 mariadb를 사용하므로 이것들과 연동이 되는 라이브러리 pymysql을 사용하기로 한다. 

우선 dbconfig.py 파일을 작성하고 실제 사용하는 프로그램에서 import 한다. 코드 출처 링크

import pymysql
# dbconfig.py
class MysqlController:
    def __init__(self, host, id, pw, db_name):
        self.conn = pymysql.connect(host=host, user= id, password=pw, db=db_name,charset='utf8')
        self.curs = self.conn.cursor()

    def insert_total(self,total):
        sql = 'INSERT INTO entire_nodes (count_of_nodes) VALUES (%s)'
        self.curs.execute(sql,(total,))
        self.conn.commit()

 

간단하게 설명하자면 class에서 인자값으로 host와 id, pw, 그리고 db이름을 인자로 받아 먼저 연결한다. 그리고 insert_total함수를 이용해 값을 넣을 수 있다. 이때 sql의 문자열에 %s를 넣고 execute시에 값을 인자로 넘기는 것을 볼 수 있는데, 이는 sql_injection 공격을 막기 위함이니 저렇게 적도록 하자 :) 그리고 위를 사용하는 코드는 다음과 같다.  코드와 설명 참고 링크.

 

 

import dbconfig
import requests
from bs4 import BeautifulSoup
from time import sleep
import re
#  main.py
url = 'https://www.ethernodes.org/network/1'
INTERBAL = 60
if __name__=='__main__':
    regex = re.compile(r'Total(.*\d)\s')
    mysql_controller = dbconfig.MysqlController('localhost','root','test123','etherstat')

    while True:
        res = requests.get(url)
        if res.status_code == 200:
            soup = BeautifulSoup(res.text, 'html.parser')
            items = soup.find_all('li')

            for item in items:
                result = regex.search(item.text)
                if result:
                    mysql_controller.insert_total(result.groups(1)[0])
                    sleep(INTERBAL)

 

여기까지 maria DB 설치방법을 알아보았어요. 회사 로고 알아보고 마칩니다. 놀러가야지.

 

라즈베리파이 관련 Tag 정리

라즈베리파이 mariadb, 라즈베리파이 PHP, Raspberry Pi, Raspberry Pi 4, Raspberry Pi 4 사용기, Raspberry Pi 4 준비물, SSD등등, 라즈베리파이 준비물, 라즈베리파이4, 라즈베리파이4 Docker 설치하기(라즈비안), 라즈베리파이4 NAS, 라즈베리파이4 NAS 구축하기 - Nextcloud, 라즈베리파이4 NAS 구축하기 - OMV5, 라즈베리파이4 OpenVPN 서버 구축하기, 라즈베리파이4 ssh 보안(Fail2ban) 적용하기, 라즈베리파이4 Swap 메모리 설정하기, 라즈베리파이4 VNC 설정하기, 라즈베리파이4 고정 IP 할당하기, 라즈베리파이4 미디어서버 구축하기 - Jellyfin, 라즈베리파이4 블루투스 키보드, 라즈베리파이4 사용기, 라즈베리파이4 사용하기, 라즈베리파이4 설치하기 + 라즈비안 한글설정, 라즈베리파이4 실 사용기, 라즈베리파이4 실시간 시스템 정보 확인 툴 Conky 설치하기, 라즈베리파이4 온도측정(방열판만 달고), 라즈베리파이4 온도측정(쿨링케이스 착용후), 라즈베리파이4 워드프레스 구축하기, 라즈베리파이4 웹서버로 사용하기(Apache, 라즈베리파이4 웹서버로 사용하기(Nginx, 라즈베리파이4 저장장치 추가하기 - USB, 라즈베리파이4 팁, 라즈베리파이용 Ubuntu Desktop 모드 설치하기, 라즈베리파이용 Ubuntu OS micro SD 메모리카드 만들기, 라즈비안 OS용 micro SD 메모리카드 만들기(balenaEtcher), 라즈비안 OS용 micro SD 메모리카드 만들기(NOOBS), 마우스 설정하기 

 

참고

기본적인 MariaDB 사용법

라즈베리파이 활용 정리

 

 

반응형