DjangoのデフォルトDBは、SQLite3です。MySQLやPostgreSQLを使用する場合は、DBの設定を変更する必要があります。

settings.py

データベースの設定は、settings.pyの以下の部分になります。 デフォルトでは SQLite3 になっています。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

必要バージョン以上のSQLite3が使える環境だと、設定の変更などの作業はありません。 SQLite3が無い場合はインストールする必要があります。

DB接続テスト

DB接続のテストはマイグレーションで行うことが可能です。 コマンドは以下になります。

python manage.py migrate

マイグレーションが正常に実行されると以下のようになります。

$ python manage.py migrate
Operations to perform:
  Apply all migrations: auth, admin, contenttypes, sessions
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying sessions.0001_initial... OK

参考 Migrations(django Documentation)

SQLite3

DjangoのデフォルトDBはSQLite3で、設定は以下のようになっています。 SQLite3がインストールされていれば、設定の変更は必要ありません。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

バージョンエラー

以下のようなエラーの場合、SQLite3が必要なバージョン 3.8.3 より低い3.7.11なので、、SQLite3をバージョン 3.8.3以上にする必要があります。

$ python manage.py migrate
Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
・・・
・・・
        raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

MySQL

MySQLを使用する場合、settings.pyで以下のように設定します。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'データベース名',
        'USER': 'ユーザー名',
        'PASSWORD': 'パスワード',
        'HOST': 'DBのホスト名'
        'PORT': 'DBのポート番号6',
    }
}

ローカルのDBへ接続して、DB名"mysite"、DBへの接続ユーザー"root"、パスワード無しの場合、以下のようにします。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysite',    # データベース名
        'USER': 'root',      # ユーザー名
        'PASSWORD': 'pass',  # パスワード
        'HOST': 'localhost', # DBのホスト名
    }
}

データベースが無い場合、データベースを作成しておきます。 データベース名が "mysite" の場合、以下を実行して作成します。

echo "create databae mysite" | mysql -u root

マイグレーションで接続テストを行います。正常の場合、以下のようにマイグレーションが実行されます。

$ python manage.py migrate
System check identified some issues:

WARNINGS:
?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
        HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/2.2/ref/databases/#mysql-sql-mode
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

設定エラー

以下のようなエラーの場合、DB設定のDB名、ユーザー、パスワードなどに間違いが無いか確認し、あれば修正します。

$ python manage.py migrate
Traceback (most recent call last):
...
...
    super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (1044, "Access denied for user ''@'localhost' to database 'mysite'")

mysqlclientエラー

以下のようなエラーの場合、pythonのmysqlclientモジュールがインストールされていません。

$ python manage.py migrate
Traceback (most recent call last):
...
...
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

以下のようにmysqlclientモジュールをインストールします。

$ pip install mysqlclient
Collecting mysqlclient
  Using cached https://files.pythonhosted.org/packages/f4/f1/3bb6f64ca7a429729413e6556b7ba5976df06019a5245a43d36032f1061e/mysqlclient-1.4.2.post1.tar.gz
Installing collected packages: mysqlclient
  Running setup.py install for mysqlclient ... done
Successfully installed mysqlclient-1.4.2.post1