Django Framework - MySQL


MySQL


djangoではSQLiteは基本的に提供されていますが、実際には提供には向いていないので、使いやすいMySQLに変更しました.

MySQL-インストール


まず、MySQLのインストールはLinux環境でのインストールです
$ pip install mysql-server
PythonではmysqlclientというライブラリでMySQLとDBをバインドできるので、追加のインストールが必要です.
$ pip install mysqlclient
mysqlclientのインストール中にエラーが発生しました
本人が下図のようにエラー(egg info error)
理由は探していませんが、Googleの検索結果によると、libmysqlclient-devを設定してこの問題を解決しました.
sudo apt-get install libmysqlclient-dev

MySQL-実行

$ service mysql start

MySQL - settings.py


SQLite->MySQLに変更されました.設定を変更する必要があります.
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql', # 사용할 엔진 설정, mysql로 바꿔준다
        'NAME': 'test',                       # 사용할 DB 이름
        'USER': 'test',                       # User ID
        'PASSWORD': 'test',                   # User Password 
        'HOST': 'localhost',                  # 접속 IP
        'PORT': '3306',                       # 접속 Port (default:3306)
    }
}
SECRET KEYと同様に、外部ファイルに解凍して管理することはセキュリティに有利です.

MySQL-ユーザー設定


rootユーザー接続mysqlで使用するデータベースを作成します.
$ create database DB이름; 
使用するユーザー(test)を作成します.
$ create user '유저ID' identified by '비밀번호';
  • パスワードを設定しないと、ユーザーとしてログイン中にエラーが発生する可能性があります.
  • に接続する特定のipを指定するには、'test'@'접속ip(localhost, ...)'を指定します.
  • ユーザーの権限を指定します(次のコードでは、DBのすべての(*)テーブルのすべての権限が付与されます).
    $ grant all privileges on DB이름.* to '유저ID'; #해당DB의 모든(*) 테이블에 모든 권한을 준다.
    $ grant select on DB이름.* to '유저ID'; # select 권한만 준다.
    ユーザー接続(コンソール)
    $ mysql -u 유저이름 -p
    $ 비밀번호 입력

    MySQL-アプリケーション


    データベースのモデルを使用します.pyを変更してmigrateして適用します.
    $ python3 manage.py makemigrations # 초기 파일 만들기
    $ python3 manage.py migrate