この記事はそもそもMySQLすらダウンロードしてない人向けです。
Djangoのプロジェクト自体は作成済みを想定しています。
環境
- OS: LinuxMint 18.3
- Django == 2.0.6
各種インストール
MySQLをインストール
$ sudo apt-get install mysql-server
インストール途中にパスワードを設定するように求められるので設定してください。
DjangoとMySQLをつなげるPyMySQLをインストール
現時点で(2018/06)デフォルトでインストールされる PyMySQL==0.7.9 は致命的なバグが含まれているためこちらではバージョンを指定してインストール。
バグについてはこちら
$ pip install PyMySQL==0.8.0
MySQL周りの設定
日本語(UTF-8)
文字化け対策です。
$ sudo vim /etc/mysql/my.cnf # MySQLの設定ファイルを変更する
以下を書き加える
[mysqld] character-set-server=utf8 skip-character-set-client-handshake default-storage-engine=INNODB [mysqldump] default-character-set=utf8 [mysql] default-character-set=utf8
MySQLを再起動する
$ sudo /etc/init.d/mysql restart
ログイン
$ mysql -u root -p
データベースの作成
mysql > create database test_db;
ユーザーの追加
ユーザー名:testuser パスワード:password ホスト名:localhost
mysql > create user `testuser`@`localhost` IDENTIFIED BY 'password';
ユーザーにデータベースの操作権限を付与
対象:testuser@localhost 対象のパスワード:password 操作できるDB名:test_db
mysql > grant all privileges on test_db.* to testuser@localhost IDENTIFIED BY 'password';
ログアウト
mysql > \n
これでMySQL側の設定は完了です。
Django側の設定
settings.pyを編集する
settings.pyの DATABASE の部分を書き換える
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test_db', # DB名を設定 'USER': 'testuser', # DBへ接続するユーザIDを設定 'PASSWORD': 'password', # DBへ接続するユーザIDのパスワードを設定 'HOST': 'localhost', 'PORT': '', 'OPTIONS': { 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", }, 'TEST': { 'NAME': 'test_sample' } } }
PyMySQLを使えるようにする
manage.pyにこれを書き加えてください。
import pymysql
pymysql.install_as_MySQLdb()
書き加える場所はどこでもいいと思います。私は import の下に書き加えてます。
終わり
これで
$ python manage.py makemigrations $ python manage.py migrate
とすれば終わり!!