【Django】MySQLを使って開発する方法とA5:SQLでDBに接続する方法

概要

UbuntuにMySQLをインストールして、Djangoプロジェクトの接続先をMySQLに変更した。
また、A5:SQLツールでテーブルを操作したかったので、A5:SQLからUbuntu側で作成したDBに接続した。

上記の手順についてまとめた。

 

前提

Ubuntuで開発する環境構築ができていること。
また、Djangoのプロジェクトを作成してDBマイグレーションしていない状態であること。

あわせて読みたい

概要 これからPythonのDjangoフレームワークを学ぶにあたり、開発環境を構築する。 今回はWindowsに仮想のLinuxOS環境を用意し、その中でPythonの仮想環境を作成するところまで行う。 LinuxOSを導入する[…]

あわせて読みたい

概要 Djangoフレームワークでアプリを作成するための基礎的な情報をまとめた。 プロジェクトとアプリの概念、Djangoの仕組み、DB作成方法や管理画面表示まわりについて扱う。   前提 環境構築ができていること。[…]

 

MySQLの導入

DjangoでMySQLを操作するためにはmysqlclientというドライバーをインストールする必要がある
上記をインストールするために、Ubuntu側でMySQLサーバーなどの必要な資材を導入する

以下の手順を踏まなくても、「sudo apt install mysql-server mysql-client」というコマンドで準備は整うかもしれない。
参考にしたサイトによっては上記だけで準備は整うようだったが、管理人は時すでに遅しで以下の手順で必要な資材をそろえた。

 

MySQLドライバーのインストール手順

Ubuntuに接続したVSCodeのターミナルにて以下のコマンドを実行した。

パッケージリストを更新

以下のコマンドを実行する。

ターミナル


sudo apt-get update

Ubuntuのソフトウェア更新を探すリポジトリのリストを最新に保つコマンド。

 

MySQLサーバー版をインストール

以下のコマンドを実行する。

ターミナル


sudo apt-get install mysql-server

MySQLサーバーをインストールするコマンド。

 

pkg-configをインストール

以下のコマンドを実行する。

ターミナル


sudo apt-get install pkg-config

pkg-configはコンパイルするときのライブラリのパス設定やリンク設定を簡単に行うツール。
ソースコードからソフトウェアをビルドする際に役立つ。

 

MySQLの開発用パッケージをインストール

以下のコマンドを実行する。

ターミナル


sudo apt-get install libmysqlclient-dev

MySQLデータベースとの通信を可能にするCライブラリを使用して、ソフトウェアをコンパイルできるようになる。

 

build-essentialパッケージをインストール

以下のコマンドを実行する。

ターミナル


sudo apt-get install build-essential

コンパイラやビルドに必要な基本的なライブラリになる。

 

Python3.10の開発用パッケージをインストール

以下のコマンドを実行する。

ターミナル


sudo apt-get install python3.10-dev

 

MySQLドライバーをインストール

以上でMySQLドライバーをインストールするための準備が整った。
※ドライバーインストールでエラーが起きて、都度必要な資材をインストールした結果、上記のコマンドを実行することになった

Djangoプロジェクトの仮想環境を有効にして、以下のコマンドを実行する。

ターミナル


pip install mysqlclient

 

MySQLの初期設定

DBの作成

MySQLで作成したDBに対してテーブル操作を行う。
以下の手順で、DjangoとA5:SQLから操作する対象のDBを作成する。

MySQLの起動

以下のコマンドを実行する。

ターミナル


sudo service mysql start

Ubuntuでは自動的にMySQLサーバーが起動しているらしいが、一応実施。

 

MySQLへ接続

以下のコマンドを実行する。

ターミナル


sudo mysql -u root

MySQLサーバーに管理者権限でログインする。

 

DB作成

以下のコマンドを実行して、myblog01というDBを作成する。
※DB名は任意のDB名でよい

MySQL


CREATE DATABASE myblog01 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

UTF-8の設定で日本語の文字化けもされず、絵文字などの特殊文字もmyblog01データベースで扱えるという設定。
※UTF-8にしておかないと文字化けが起きたりするので注意

 

DB作成確認

以下のコマンドを実行する。

MySQL


show databases;

作成したmyblog01データベースが表示される。
その他、デフォルトでDBが表示されるが気にしなくてよい。

 

ユーザーの作成

DjangoからMySQLに接続するため、また、A5:SQLツールでMySQLに接続するために、全ての権限を付与した利用者を作成する。

尚、ローカル開発で適当に全権限を付与しているが、本来は権限ごとに作成されたユーザーを利用して権限の範囲でDB操作は行う。
ユーザーの権限は適宜変更すること。

以下の手順でユーザーを作成する。

外部接続ユーザー作成

以下のコマンドを実行する。

MySQL


CREATE USER 'hoge'@'%' IDENTIFIED BY 'password01';

hogeユーザーでパスワードがpassword01という意味。
作成したいユーザーに合わせて、ユーザー名とパスワードを設定すること。

 

DB操作権限をすべて付与

以下のコマンドを実行する。

MySQL


GRANT ALL PRIVILEGES ON *.* TO 'hoge'@'%' WITH GRANT OPTION;

上記ユーザー情報でMySQLサーバー内のすべてのDBに対して、すべての権限をもって操作を行うことができる。
※ここは目的によって適宜制限をかけること

 

権限を反映させる

以下のコマンドを実行する。

MySQL


FLUSH PRIVILEGES;

MySQLの必要な設定は完了なので、以下のコマンドを実行してMySQLの接続を解除する。

MySQL


exit;

 

Django側の設定

DBの接続先変更

settings.pyについて、デフォルトでSQLite3を参照しているのでMySQLに変更する。

settings.py


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myblog01',  # 使用するデータベース名
        'USER': 'hoge',  # データベースのユーザー名
        'PASSWORD': 'password01',  # ユーザーのパスワード
        'HOST': 'localhost',  # データベースサーバのホスト名またはIPアドレス
        'PORT': '3306',  # データベースサーバのポート番号(MySQLのデフォルトは3306)
    }
}
 

 

NAME’: ‘myblog01‘, # 使用するデータベース名
USER’: ‘hoge‘, # データベースのユーザー名
PASSWORD’: ‘password01‘, # ユーザーのパスワード

上記を作成したユーザーとDB名に変更する。
その他は必要なMySQLに接続するための設定のため、そのまま転記すること。

 

DB作成

マイグレーションを行ってDBを作成する。

ターミナル


python3 manage.py migrate

上記コマンドによりエラーがなければ、作成したmyblog01データベースにDjangoのデフォルトで保持しているテーブルが作成される。

 

A5:SQLの設定

MySQLに接続

Ubuntu側で作成したMySQLのDBに、A5:SQLから接続する。
以下の手順で実施すればOK。

 

▲【追加】ボタンを押下

 

▲【MySQL】を選択

 

▲作成したユーザー情報を入力して【テスト接続】を押下

 

▲DB接続完了

 

▲【OK】ボタンを押下して設定を完了させる

 

▲任意のDB名称の設定

 

▲作成したDBに接続完了

A5:SQLに接続する手順は以上となる。

スポンサーリンク