今回は、macローカル環境にMySQLをインストールしデータベース環境を設定する方法を紹介します。
◆動作検証環境
・MySQL:8.0
・mysqlclient : 2.1.0
MySQLのインストール
*Homebrewのインストール方法は、こちらを参考にしてください。
最新のバージョンをインストールする際は下記のコマンドとします。
1 2 3 | $ brew install mysql |
バージョンを指定する場合は@を使います(5.7の場合)。
1 2 3 | $ brew install mysql@5.7 |
インストールの確認をします。
1 2 3 | $ mysql --version |
下記のようにバージョンが表示されればOKです。
1 2 3 | mysql Ver 8.0.27 for macos11.6 on x86_64 (Homebrew) |
データベースの作成
MySQLの起動
1 2 3 | $ brew services start mysql |
MySQLへのログイン
パスワードを利用せずにrootでログインする場合は以下のコマンドを実行します。
1 2 3 | $ mysql -uroot |
rootにパスワードを作成しより安全にログインするには以下のコマンドを行い、設定を行います。
1 2 3 | $ mysql_secure_installation |
以下のように、パスワード設定を行う際にプラグインを利用するか確認されます。
今回は利用せずに設定をするため、何も入力せずenterを押します。
1 2 3 4 5 6 7 8 9 10 11 12 | Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: |
パスワードを入力します。
1 2 3 4 5 | New password: Re-enter new password: |
匿名ユーザーの削除を確認されますが、今回はEnterを押しスキップします。
1 2 3 4 5 6 7 8 9 10 | By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : |
rootのリモートでのログインを禁止するか確認されますが、今回はEnterを押し、スキップします。
1 2 3 4 5 6 7 | Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : |
デフォルトで作成されている、testのデータベースを削除するか確認されますが、今回はEnterを押し、スキップします。
1 2 3 4 5 6 7 8 9 | By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : |
これまでの変更をすぐに有効とするかと確認されますが、今回はEnterを押し、スキップします。
1 2 3 4 5 6 | Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : |
以下のように表示され設定が完了します。
1 2 3 | All done! |
上記の設定を行うとログインの際にパスワードの入力が必須となるため、以降はパスワードを利用してrootでログインします。
1 2 3 | $ mysql --user=root --password |
コマンド実行後にパスワードを入力してログインします。
データベースの作成(your_databaseはそれぞれで変更してください)
1 2 3 | mysql > CREATE DATABASE your_database; |
データベース一覧の確認
1 2 3 | mysql> show databases; |
1 2 3 4 5 6 7 8 9 10 11 12 13 | mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | your_database | +--------------------+ 5 rows in set (0.01 sec) |
さきほど作成したyour_database が確認できればOK
MySQLドライバーのインストール
MySQLとPythonを接続するためのドライバーをインストールします。
MySQL用のドライバーにはいくつか種類ありますが、今回は、Djangoが推奨しているmysqlclientを利用します。
開発プロジェクトのディレクトリに移動し、仮想環境を有効にします。
こちらの設定がまだの方は、こちらの記事を参考に仮想環境の設定を行ってください。
macのローカル環境にDjangoの開発環境を設定する方法を紹介します。◆動作検証環境・ローカル環境:mac Catalina・python:3.7.5・Django:3.1.2python3のインストー[…]
1 2 3 | $ source venv/bin/activate |
mysql–serverをインストール
1 2 3 | (venv)$ pip3 install mysqlclient |
mysql5.7のバージョンでインストールした場合は、mysqlclientのバージョンを2.0以下に指定する必要があります(本記事公開時は2.1が最新)
1 2 3 | (venv)$ pip3 install mysqlclient==2.0 |
ここでデータベースを停止する場合は以下のコマンドを実施
1 2 3 | $ brew services stop mysql |
データベース作成後の初期設定
ユーザー追加
1 2 3 | mysql > CREATE USER 'your_user_name'@'localhost' IDENTIFIED BY 'yourpassword'; |
追加したユーザーへの権限付与
1 2 3 | mysql > GRANT ALL on your_database.* to 'your_user_name'@'localhost'; |
1 2 3 | mysql > FLUSH PRIVILEGES; |
ログアウト
1 2 3 | mysql > \q |
1 2 3 | brew services restart mysql |
Django settings.pyの編集
データベースの準備ができましたので、Django内の関係するファイルを編集し、Mysqlの利用に対応させます。
settings.pyを以下のように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': BASE_DIR / 'db.sqlite3', # } # } DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database', 'USER': 'your_user_name', 'PASSWORD': 'your_password', } } |
以上、macローカル環境にMysqlをインストールしデータベース環境を設定する方法を紹介しました。