MySQLに繋いでローカル接続 by VsDeus.com

Wagtail Wiki

MySQLに繋いでローカル接続

MySQLに繋いでローカル接続 VsDeus.com

初回投稿日 2019-12-30 | 更新日 2020-02-03

ここではWagtailで使用するデータベースを本番環境向けに設定していきます。

MySQLモニタを起動する

MySQLモニタを起動してみましょう。

$ mysql -u root -p

$ mysql -u root -p
Enter password: ***********

パスワードを設定してる場合は「- p」を付けて、
MySQLインストールの際に決めたパスワードを入力するとMySQLモニタを起動できます。

$ mysql -u root

パスワードを設定しなかった場合は「-p」を外して上記の様なコマンドでMySQLモニタを起動します。
ここで「ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)」
の様な表示が出てきた場合は、既にパスワードを設定してる可能性が高いので入力が必要です。

MySQLでデータベースを作成する

データベースの作成
$ create database データベース名;

データベースの削除;
$ drop database データベース名

それでは、Wagtailで使うデータベースを作成しましょう。
上記が作成と削除になります。
以下で実際に動かしてみます。

$ create database myproject_db;

$ create database myproject_db;
Query OK, 1 row affected (0.01 sec)

ここではデータベースの名前を「myproject_db」としてます。
「create database myproject_db;」でデータベースを作成出来ます。
MySQLに接続後はコマンドの最後に「;」が付いてますので注意してください。
因みに、データベースの名前は大文字でも全て小文字に変換されます。


(ここでは深くは述べませんが、こういう動作の違いが、名前の付け方に関して
キャメルケース、スネークケース、ケバブケース等で議論が分かれている理由です。)

$ show databases;

$ show databases;
+--------------------+
| Database|
+--------------------+
| information_schema |
| myproject_db|
| mysql|
| performance_schema |
| phpmyadmin |
+--------------------+
** rows in set (0.00 sec)

先ほど作成したデータベースが存在してるか確認してみましょう。
「$ show databases;」で確認できます。
無事、先ほど作ったデータベース「myproject_db」が入っていれば問題ありません。

MySQLモニタの起動を解くには、「ctrl+c」を押して下さい。

$ drop database myProject_db;

データベースを削除する際は、
「$ drop database データベース名」で出来ます。

Wagtail内の記述をSQLiteからMySQLに設定する

Wagtailのデータベースへの接続をSQLiteからMySQLに切り替える為に設定をします。

C:\Users\~\directoryA\
myProject\myProject\settings\base.py

MySQLに繋いでローカル接続 VsDeus.com

PCのWindous(C:)のユーザー(Users)の下に任意のdirectoryAというディレクトリがあります。
その下に、WagtailプロジェクトであるmyProjectディレクトリがあると思います。

更にその下にもmyProjectディレクトリがあり、
その中のsettingsというディレクトリの下にbase.pyというファイルがあります。
base.pyの中の記述を変更して行きます。


尚、任意のディレクトリのdirectoryAとWagtailプロジェクトのmyProjectの名前は、
別の任意の名前を付けていても問題ないです。

C:\Users\~\directoryA\
myProject\myProject\settings\base.py

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

import pymysql
pymysql.install_as_MySQLdb()

DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.mysql',
  'HOST': 'ホスト名(127.0.0.1)',
  'PORT': 'ポート番号(3306)',
  'NAME': 'データベース名',
  'USER': 'ユーザー名',
  'PASSWORD': 'パスワード',
  'ATOMIC_REQUESTS': True,
  'OPTIONS': {
   'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
  }
 }
}

base.pyのページ中ほどに、「DATABASES」という項目があると思います。
SQLiteのDATABASES部分をコメントアウトして、
その下に、PyMySQLをインポートする旨の記述を追加します。

PyMySQLは、PythonからMySQLに接続する際に必要なドライバです。

更に下に、MySQLについてのDATABASESを追加します。
上記の様にコピペでも構いませんので追加して下さい。

  'ENGINE': 'django.db.backends.mysql',
  'HOST': '127.0.0.1',
  'PORT': '3306',
  'NAME': 'myProject_db',
  'USER': '***',
  'PASSWORD': '*******',

ここで先ほど作ったデータベース名やユーザー名、パスワードを入れて行きます。
ホスト名は127.0.0.1を入れてください。
ポート番号は3306を入れてください。
データベース名は先ほど作ったデータベース名。
ユーザー名とパスワードはMySQLモニタを起動した際に使ったものになります。

マイグレーション(MySQL切り替え後)

SQLiteからMySQLに切り替えたので、マイグレーションをしましょう。
(マイグレーションは「ローカルでサイトに接続する」のページで詳しく説明してます。
尚、ここからの説明に付いても同様になってますので簡素に説明します。
詳しくは「ローカルでサイトに接続する」をご覧ください。)

$ python manage.py makemigrations
$ python manage.py migrate

$ python manage.py makemigrations
No changes detected

$ python manage.py migrate

Applying wagtailusers.0008_userprofile_avatar... OK
Applying wagtailusers.0009_userprofile_verbose_name_plural... OK

コマンドプロンプトに上記の様に入力して下さい。
~... OKと表示されていれば無事マイグレーション出来てます。

管理画面のユーザを設定

次に管理画面のユーザ(メールアドレス、パスワード)を設定します。

$ python manage.py createsuperuser

$ python manage.py createsuperuser
Username: 任意のユーザー名
Email address: 任意のメールアドレス
Password: 任意のパスワード
Password (again): 任意のパスワード
Superuser created successfully.

ローカルで接続する(MySQL切り替え後)

それでは、SQLiteからMySQLに切り替わってる状態でローカルでブラウザ表示してみましょう。

$ python manage.py runserver

「http://127.0.0.1:8000/」のURLにアクセスすると表示されます。

(ポート番号を付けてる場合は、「http://127.0.0.1:(ポート番号)/」がURLになります。
例えば、「$ python manage.py createsuperuser 8080」なら、
「http://127.0.0.1:8080/」になります。
このサイトでは、特別な記述がない場合はポート番号を付けない前提で進めて行きます。)

Wagtailの管理画面(MySQL切り替え後)

「http://127.0.0.1:8000/admin***」にアクセスして下さい。
***部分は「ファイル内設定(URLや日付等)」のページで設定した任意の英数字になります。

MySQLに繋いでローカル接続 VsDeus.com

Wagtailの管理画面です。
「管理画面のユーザを設定」で設定したユーザー名とパスワードを入力してログインして下さい。

Django administrationの管理画面(MySQL切り替え後)

「http://127.0.0.1:8000/django-admin***」にアクセスして下さい。
***部分は「ファイル内設定(URLや日付等)」のページで設定した任意の英数字になります。

MySQLに繋いでローカル接続 VsDeus.com

Django administrationの管理画面です。
「管理画面のユーザを設定」で設定したユーザー名とパスワードを入力してログインできます。

ここまで問題なく各管理画面にログイン出来たら、SQLiteからMySQLに切り替えが完了してます。
次回はWagtailをHerokuのクラウドサーバーへアップロードです。

次の記事

Herokuにアカウントを作成

Herokuのアカウントを作成して、Herokuをコマンドプロンプトから起動するまでの説明です。

MySQLに繋いでローカル接続 VsDeus.com