DjangoとMySQLを連携する方法 - Python 3.11のインストールからデータベース設定、GitHubへのSSH接続まで
このガイドでは、DjangoプロジェクトをMySQLデータベースに接続し、Python 3.11を使用して仮想環境を構築する手順を紹介します。さらに、GitとGitHubでのバージョン管理方法、SSHを使用してGitHubにリポジトリをプッシュする手順もカバーしています。
python3.12ではMySQLのmysqlclientを利用できなかったため備忘録として残しておきます。
Gitでバージョン管理もしたかったので加筆修正しました。
1. Python 3.11のインストール
まずは、UbuntuでPython 3.11を利用するために必要な手順を実行します。
1.1 Deadsnakes PPAを追加してPython 3.11をインストール
Ubuntuの標準リポジトリに含まれていないPythonの新しいバージョンをインストールするために、Deadsnakes PPA
を追加します。
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.11 python3.11-venv python3.11-dev
1.2 仮想環境の作成と有効化
Python 3.11を使用して仮想環境を作成し、有効化します。
python3.11 -m venv venv
source venv/bin/activate
1.3 DjangoとMySQLクライアントのインストール
仮想環境が有効化された状態で、DjangoとMySQLクライアントをインストールします。
pip install django mysqlclient
2. GitとGitHubでのバージョン管理
DjangoプロジェクトをGitとGitHubでバージョン管理し、SSHを使用してリモートリポジトリに接続する手順を紹介します。
2.1 Gitの初期化
プロジェクトディレクトリでGitを初期化します。
cd /path/to/your/folder # プロジェクトフォルダに移動
git init # Gitリポジトリを初期化
2.2 リモートリポジトリの作成
GitHubで新しいリポジトリを作成し、ローカルリポジトリと接続します。
2.3 SSHキーの生成とGitHubへの登録
GitHubとSSH接続を行うために、SSHキーを生成し、GitHubに登録します。
-
SSHキーの生成:
ssh-keygen -t ed25519 -C "your_email@example.com"
ここで、
your_email@example.com
はGitHubアカウントに登録しているメールアドレスです。 -
SSHエージェントを開始し、鍵を追加:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
-
GitHubに公開鍵を追加:
公開鍵をクリップボードにコピーします。
cat ~/.ssh/id_ed25519.pub
表示された公開鍵をコピーし、GitHubの設定画面で「SSH and GPG keys」から「New SSH key」をクリックして追加します。
2.4 .gitignoreの設定
不要なファイルやディレクトリをGitで追跡しないようにするため、.gitignore
ファイルを作成します。
touch .gitignore
.gitignore
ファイルに以下のような設定を追加します。
venv/
__pycache__/
*.pyc
db.sqlite3
.env
2.5 ファイルの追加とコミット
プロジェクトのファイルを追加してコミットします。
git add .
git commit -m "Initial commit"
2.6 リモートリポジトリの追加
リモートリポジトリをSSHを使用して追加します。
git remote add origin git@github.com:your-username/your-repo.git
2.7 リモートリポジトリへのプッシュ
ローカルのコミットをGitHubのリモートリポジトリにプッシュします。
git branch -M main
git push -u origin main
3. MySQLユーザーの作成とデータベースの設定
次に、DjangoとMySQLを連携するために必要なユーザーとデータベースを作成し、適切な権限を設定します。
3.1 MySQLにログイン
MySQLのroot
ユーザーでログインします。
sudo mysql -u root -p
3.2 ユーザーの作成
Djangoで使用するユーザーmy_django_user
を作成し、パスワードを設定します。
CREATE USER 'my_django_user'@'localhost' IDENTIFIED BY 'password';
3.3 データベースの作成
Djangoプロジェクト用のデータベースmy_django_db
を作成します。
CREATE DATABASE my_django_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
3.4 データベース権限の付与
作成したユーザーmy_django_user
に対してデータベースmy_django_db
への全ての権限を付与します。
GRANT ALL PRIVILEGES ON my_django_db.* TO 'my_django_user'@'localhost';
FLUSH PRIVILEGES;
3.5 権限の確認
ユーザーに適切な権限が付与されているか確認します。
SHOW GRANTS FOR 'my_django_user'@'localhost';
4. Djangoのデータベース設定の確認
Djangoプロジェクトのsettings.py
ファイルで、MySQLデータベースに接続するための設定を行います。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my_django_db', # 作成したデータベース名
'USER': 'my_django_user', # 作成したユーザー名
'PASSWORD': 'password', # ユーザーのパスワード
'HOST': 'localhost',
'PORT': '3306',
}
}
5. マイグレーションの実行
仮想環境が有効化されていることを確認した上で、Djangoのマイグレーションを実行します。
python manage.py migrate
6. トラブルシューティング
DjangoとMySQLの連携中に発生する可能性のあるエラーと、その対処方法を紹介します。
6.1 MySQLのユーザー権限エラー (1044)
エラー OperationalError: (1044, "Access denied for user 'my_django_user'@'localhost' to database 'my_django_db'")
は、ユーザーにデータベースへの権限が不足していることを意味します。この場合、GRANT ALL PRIVILEGES
コマンドを再実行して権限を付与してください。
6.2 MySQLへの接続エラー (1045)
エラー OperationalError: (1045, "Access denied for user 'my_django_user'@'localhost' (using password: YES)")
は、ユーザー名やパスワードに誤りがあるか、認証プラグインに問題があることを示しています。settings.py
の設定を再確認し、CREATE USER
コマンドで正しい認証プラグインを使用するようにしてください。
6.3 Django設定ファイルの再確認
settings.py
に記載されているデータベース接続情報 (USER
, PASSWORD
, NAME
など) が正しいか再確認してください。特にスペルミスや小文字・大文字の違いに注意してください。
python manage.py migrate
5. トラブルシューティング
DjangoとMySQLの連携中に発生する可能性のあるエラーと、その対処方法を紹介します。
5.1 MySQLのユーザー権限エラー (1044)
エラー OperationalError: (1044, "Access denied for user 'my_django_user'@'localhost' to database 'my_django_db'")
は、ユーザーにデータベースへの権限が不足していることを意味します。この場合、GRANT ALL PRIVILEGES
コマンドを再実行して権限を付与してください。
5.2 MySQLへの接続エラー (1045)
エラー OperationalError: (1045, "Access denied for user 'my_django_user'@'localhost' (using password: YES)")
は、ユーザー名やパスワードに誤りがあるか、認証プラグインに問題があることを示しています。settings.py
の設定を再確認し、CREATE USER
コマンドで正しい認証プラグインを使用するようにしてください。
5.3 Django設定ファイルの再確認
settings.py
に記載されているデータベース接続情報 (USER
, PASSWORD
, NAME
など) が正しいか再確認してください。特にスペルミスや小文字・大文字の違いに注意してください。
まとめ
- Pythonのインストールと仮想環境のセットアップ: Ubuntu上でPython 3.11をインストールし、仮想環境を構築しました。
- MySQLでデータベースとユーザーの作成、および権限の付与: MySQLユーザーとデータベースを作成し、Djangoからアクセスできるように権限を設定しました。
-
Django設定ファイルでのデータベース接続情報の設定:
settings.py
にMySQL接続情報を正しく設定しました。 - マイグレーションの実行とエラー対応: マイグレーションを実行し、発生する可能性のあるエラーに対して適切に対処しました。
これらの手順を実行することで、DjangoプロジェクトとMySQLデータベースを正しく連携させることができます。