[Re:Django] 1. 장고 초기세팅

Magit·2020년 5월 3일
3

Django

목록 보기
1/13

1차 그룹프로젝트가 끝나고 내가 얼마나 부족한 지 알 수 있었다.
모래성이 무너질듯 불안하게 쌓여가고 있었는데, 그 모래성이 무너지지않도록 다시 한 번 처음부터 차근차근 정리해볼 생각이다.

장고 초기세팅

사실 장고 초기세팅에관해서는 [Django] westagram (1) - 처음 셋팅하기[Django] 그룹 프로젝트를 위해 장고 기본적인 세팅하기 를 참조하면 된다.

기본적인 가상환경 설치 및 필요한 패키지 설치, requirements.txt 만들기와 MySQL 연동하기 등 방법에 대해서 간단하게 쓰여져있다. 하지만 그중에서 자세하게 기억이 안나는 MySQL 부분을 중점적으로 다시 한 번 정리하고자 한다.


MySQL 설치하기(OS MAC 기준)

MySQL 을 설치하는 방법은 brew로 설치하면 굉장히 편하다.

brew install mysql
#mysql 최신버젼이 설치된다.

혹시라도 다른 버젼의 mysql을 설치하고 싶다면 아래와 같이 입력하자.

brew search mysql
# 자신이 설치할 mysql 명칭 확인하기

brew install mysql@5.5
# 버젼 5.5 mysql이 설치된다.

설치가 완료되었다면 brew list 명령어로 설치 목록을 확인할 수 있다.


MySQL 시작 및 기본적인 설정하기

MySQL 시작하기

mysql.server start

MySQL 설정하기

mysql_secure_installation

위 명령어를 치면 총 6가지의 질문이 나온다.
아래 선택사항은 현재 자기가 필요한 상황에 Y/N을 선택하자.

  1. 비밀번호 복잡도 검사과정 (Y/N)
    • Y : 복잡한 비밀번호 설정 (영문+숫자같이 조합형써야함)
    • N : 쉬운 비밀번호 설정 (1234 같은 쉬운 비밀번호 설정 가능)
  2. 비밀번호 입력 & 확인 : 설정할 비밀번호를 작성하고 확인차 또 한 번 작성
  3. 익명 사용자 삭제 (Y/N)
    • Y : 접속하는 경우 mysql -u root 처럼 -u 옵션이 필요하다.
    • N : 접속하는 경우 mysql 처럼 -u 옵션이 불필요하다.
  4. 다른 IP에서 root 아이디로 원격 접속 허용여부 설정 (Y/N)
    • Y : 원격 접속 불가능
    • N : 원격 접속 가능
  5. Test 데이터베이스를 삭제 (Y/N)
    • Y : Test 데이터베이스 제거
    • N : Test 데이터베이스 유지
  6. 변경된 권한을 테이블에 적용하는 설정에 대한 문의 (Y/N)
    • Y : 적용시킨다.
    • N : 적용시키지 않는다.
    • 해당 질문에 대해서는 무조건 Yes를 선택하자.

모든 질문에 대해서 대답하면 All done! 이라는 메세지가 뜰것이다.

pip 패키지 mysqlclient로 MySQL과 DB 연동하기

파이썬에서 mysqlclient 라는 라이브러리를 통해서 MySQL과 DB를 연동시킬 수 있다.

pip install mysqlclient

DB 생성하면서 characterset 을 설정하는 방법

데이터베이스에 이모티콘 데이터를 넣기위해서는 기본적인 UTF-8 charset만으로는 저장할 수 없다. 그래서 DB를 만들 때, utf8mb4를 설정해줘야한다.

CREATE DATABASE 데이터베이스이름 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci

위 명령어를 해석하자면 데이터베이스이름 이라는 데이터베이스를 생성하는데 기본 문자 세트를 utf8mb4로 지정하고 정렬 방식은 utf8mb4_general_ci로 생성하십시오 가 된다.

show variables like 'character_set%'; 명령어를 쳐보면 utf8mb4 설정이 된 것을 볼 수 있다.

여기서 'utf8mb4_general_ci' vs 'utf8_unicode_ci' 에 대한 글 및 characterset 과 collation 에 대한 글을 따로 작성하였으니 참고하자.

DB를 생성한 후 장고와 MySQL을 연결하면서 OPTION으로 charset과 collation을 따로 선언해줘야한다. 연결 방법에 대해서는 [Django] 그룹 프로젝트를 위해 장고 기본적인 세팅하기 도 참고하자.

DATABASES = {
	'default' : {
		'ENGINE': 'django.db.backends.mysql',
		'NAME': '데이터베이스명',
		'USER': '데이터베이스 접속 계정명',
		'PASSWORD': '데이터베이스 접속 패스워드',
		'HOST': '데이터베이스 주소',
		'PORT': '포트 번호',
		'OPTIONS': {'charset': 'utf8mb4'},
		'TEST': {
			'CHARSET': 'utf8mb4',
			'COLLATION': 'utf8_general_ci'
		}
	}
}

로그인하기

$ mysql -u root -p
$ Enter password:
# root 아이디로 패스워드 입력해서 로그인하겠다는 명령어!

정상적으로 로그인되었다면 쉘이 mysql> 로 변환된다.

status; 명령어로 현재 db 상태 확인하기

status; 명령어를 입력하면 mysql의 db 상태를 확인할 수 있다.
여기서 characterset 을 주의깊게 봐야한다. 잘못 설정되있다면 한글이 깨지는 등 문제가 생길 수 있기때문이다. MySQL은 기본적으로 서버 characterset이latin1으로 설정되있기 때문에 DB 생성시에 값을 지정해줘야한다.

혹시라도 characterset 설정이 utf8 계열이 아니라면 설정을 바꿔줘야한다.

brew를 통해 mysql 서버 항상 돌게 만들기

brew services start mysql

쉘에서 나가기 및 서버 종료

쉘에서 나가기는 exit 또는 quit 명령어를 치면 된다.
그리고 MySQL 서버 종료 명령어는 mysql.server stop 이다.


MySQL 삭제하기

brew 명령어로 설치한 MySQL을 깔끔하게 삭제하는 방법에 대해서 알아보자.

sudo rm -rf /usr/local/var/mysql

명령어를 치고 비밀번호를 입력하라고 하면 자신의 Mac 비밀번호를 입력하면 된다.
그리고 나머지 파일들까지 삭제하기 위해 아래 명령어들을 입력하자.

sudo rm -rf /usr/local/bin/mysql
sudo rm -rf /usr/local/Cellar/mysql

삭제가 완료된 후 brew list 명령어로 설치 목록을 확인하면 mysql이 사라진 걸 확인할 수 있을것이다.

참고 사이트들
mysql database 이모티콘 설정(utf8mb4)
[Django] Django-mysql 연동 및 django에서 mysql 삭제방법 정리

profile
이제 막 배우기 시작한 개발자입니다.

0개의 댓글