본문 바로가기

IT/Django

장고(Django)와 다프네(Daphne) 서비스 설정을 위한 mysql 서버 설치 및 설정

지금까지 Django 사이트 개설을 위한 기본 설정들을 해오고 있습니다. 이글은 제가 사이트 개설을 하면서 겪었던 시행착오를 정리하는 차원입니다. 제가 설정하는 방법이 정답은 아닙니다. 

제가 편하게 검색을 통해 알아보고 그것을 적용하여 사이트를 개설한 것에 대한 정리입니다.

 

mysql db 설치

 

먼저 web 서버를 만드는 것처럼 서버를 한대 더 추가하시면 됩니다. 

오라클 대시보드에서 인스턴스를 추가하여 root 접속까지 가능한 기본 설정을 하시면 됩니다.

 

한가지 주의할 점이 있습니다. 다들 오라클에서 인스턴스(서버)를 생성하실 때 이 부분을 주의하여야 합니다.

 

Name: 이 부분이 중요합니다. 중요할 수도 있고 안할 수도 있겠지만 서버의 이름을 지정하는 것입니다. 

서버를 생성하고 나서는 오라클에서는 수정이 가능하다고 하는데, 저도 몇번을 수정하려고 했는데, 결론은 수정이 안됩니다. 그래서 저는 서버를 삭제하고 다시 생성하였습니다. 

저같이 고생하지 마시고 생성하실때 적당한 이름을 지어서 넣으시기 바랍니다.

 

 

서버를 생성하여 root 접속까지 할 수 있도록 하였다면 이제 mysql db를 설치하도록 하겠습니다.

 

apt update

apt search mysql-server

 

설치 가능한 mysql db 서버의 목록이 나옵니다.

현재 ubuntu가 최신 버전이라 mysql도 같이 8.x대가 보입니다.

최신버전은 무슨 문제가 발생할지 모르니 설치하는데 조금은 불편하기는 하지만 5.x 버전으로 설치하였습니다.

 

wget으로 리포지터리 패키지를 다운로드 합니다. 

 

mkdir downloads

cd downloads

wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

 

 

dpkg -i mysql-apt-config_0.8.12-1_all.deb 실행하면 설정 화면이 나타납니다.

 

      mysql bionic 선택

        mysql 5.7 선택합니다.

 

      apt-get update

 

      apt-cache policy mysql-server 명령어로 설치 가능한 mysql을 확인합니다.

mysql client를 설치합니다.

apt install mysql-client=5.7.*-1ubuntu18.04

apt install mysql-community-server=5.7.*-1ubuntu18.04

명령어로 mysql 서버를 설치합니다.

mysql 설치 완료 및 프로세스 확인

 

설치가 완료되면 mysql이 자동으로 구동됩니다.

ps 명령어로 확인해보면

 

ps -ef | grep mysql 

 

mysql 프로세스가 확인이 됩니다.

mysql root 접속 

mysql 설치 시 root 계정 비밀번호를 입력하였을 것입니다.

root 계정으로 접속해봅니다.

mysql -u root -p

mysql 언어셋 변경

mysql 설치 후에는 반드시 mysql의 언어셋을 변경 해 주어야 합니다.

 

언어셋 문제가 발생하면 이미 입력되어 있는 데이터는 변경하지 않기 때문에 데이타베이스를 삭제하고 다시 시작해야

하는 문제가 발생 할 수 있습니다.

 

/etc/mysql/mysql.conf.d/mysqld.cnf를 변경해야 합니다.

 

[mysqld]

collation-server = utf8_unicode_ci

init-connect='SET NAMES utf8'

character-set-server = utf8

 

[client]

default-character-set=utf8

 

[mysql]

default-character-set=utf8

 

mysql 데이타베이스 및 계정 생성

root 계정으로 접속한 화면입니다. 

mysql -u root -p

 

mysql > show databases;

해서 현재 데이타베이스를 확인 해 볼 수 있습니다.

 

데이타베이스 생성

프로젝트에서 사용할 데이타베이스를 생성하도록 하겠습니다.

데이타베이스 이름은 사용하기 편한 이름으로 하면 되겠습니다. 

 

CREATE DATABASE oc_mselecdb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

 

생성된 데이타베이스 확인

show databases;

mysql 계정 생성과 권한 주기

생성된 데이타베이스를 이용할 계정을 생성하겠습니다.

 

create user '아이디'@'%' identified by '비밀번호';

 

새로만든 계정에 생성된 데이타베이스를 이용할 권한을 주도록 하곘습니다.

GRANT ALL PRIVILEGES ON DB명.테이블 TO 계정아이디;

flush privileges;

 

 

만든 계정 확인하기

exit 명령어로 mysql을 종료 한 후 생성한 계정으로 mysql에 접속해봅니다.

 

mysql> exit;

 

mysql -u mselecdb -p

 

접속이 되면 데이타베이스를 확인하여 계정 생성이 제대로 되었는지 확인할 수 있습니다.

 

show databases;   --> 데이타베이스 리스트 보기

 

use oc_mselecdb;  -> 데이타베이스 사용 명령어

 

show tables;   --> 해당 데이타베이스 내 모든 테이블

 

mysql 무료 툴 설치

기본적으로 mysql 관리는 콘솔에서 관리 하도록 되어있습니다. 그러나 콘솔 명령어를 다 기억하고 각종 관리 명령어

데이블 생성, 인덱스 생성, 쿼리문 생성 등의 명령을 처리하는데 콘솔에서 하기는 불편합니다.

이러한 불편을 해소 하기 위하여 서버가 아닌 클라이언트에서 관리할 수 있는 툴이 있습니다

mysql은 기본적으로 무료로 사용할 수 있기 때문에 mysql은 GUI 툴이 포함되어 있지 않습니다. 따라서 상용 관리툴이나 무료 관리 툴을 사용하여 서버를 관리 할 수 있습니다

 

무료 관리툴 : heidisql 과 dbeaver가 있습니다.

 

저는 dbeaver를 사용합니다. 

다운로드 : https://dbeaver.io/download/

 

Download | DBeaver Community

Download Tested and verified for MS Windows, Linux and Mac OS X. Install: Windows installer – run installer executable. It will automatically upgrade version (if needed). MacOS DMG – just run it and drag-n-drop DBeaver into Applications. Debian package

dbeaver.io

방화벽 열기

먼저 /etc/mysql/mysqld.conf.d/mysqld.cnf 파일을 편집해야합니다.

위의 bind-address = 127.0.0.1 부분을 주석처리를 해주어 외부에서 접속할 수 있도록 해주어야 합니다.

 

sudo iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

 

위의 명령어로 os의 방화벽을 열어 주어야 합니다.

 

매우 중요 : 

  sudo netfilter-persistent save

  sudo netfilter-persistent reload

  service iptables restart

 

로 방화벽 정책을 저장하고 다시 리로드를 해주어야 합니다. 그렇지 않으면 오라클 클라우드 수신 정책을 수정하더라도 외부에서 mysql로 접속할 수 없습니다. 

 

저도 이부분에서 많은 시행 착오를 겪었습니다.

 

 

방화벽 열기 - oracle cloud 수신규칙

오라클 클라우드>네트워킹>가상클라우드>수신규칙에서 3306 포트를 추가해 주시면 외부에서 접속이 됩니다.

 

여기까지가 DB 서버를 구성하는 단계입니다. 이제 외부에서 DB 서버로 접속이 가능한지 확인하시면 됩니다.