概要
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)
}
}
USER’: ‘hoge‘, # データベースのユーザー名
PASSWORD’: ‘password01‘, # ユーザーのパスワード
上記を作成したユーザーとDB名に変更する。
その他は必要なMySQLに接続するための設定のため、そのまま転記すること。
DB作成
マイグレーションを行ってDBを作成する。
ターミナル
python3 manage.py migrate
上記コマンドによりエラーがなければ、作成したmyblog01データベースにDjangoのデフォルトで保持しているテーブルが作成される。
A5:SQLの設定
MySQLに接続
Ubuntu側で作成したMySQLのDBに、A5:SQLから接続する。
以下の手順で実施すればOK。
A5:SQLに接続する手順は以上となる。