自前のブログ作り④ ー 環境準備:MySQLをインストールして、データベースを作成する

schedule Published
published_with_changes Updated
Category folderMake
format_list_bulleted Contents

Headless CMSのStrapiのクイックスタートだとSQLiteを使用しているのですが、SQLiteは馴染みがないので、Strapiのカスタムインストールを利用する前提で、聞き覚えのあるMySQLを使おうと思います。今回はその前準備としてMySQL8.0をインストールして、データベースを作っておきます。

MySQL8.0をインストール

Ubuntuリポジトリのパッケージをインストールしました。

$ sudo apt update
$ sudo apt install mysql-server

インストールされたら、付属のセキュリティスクリプトを実行するのが習わしのようです。

$ sudo mysql_secure_installation

実行するとMySQLのrootパスワードとセキュリティオプションの設定を訪ねてきます。Yes/Noの質問は全てYesにし、パスワード設定のバリデーション強度についてはSTRONGにしました。
これで、匿名ユーザーとテストデータベースが削除され、リモートrootログインが無効になりました。

MySQLユーザーの作成と権限の付与

ユーザーを作成する

インストールした後はMySQLのrootユーザーのみ作られているので、作業ユーザーを作成します。まずは、rootユーザーでMySQLサーバーに接続します。

$ sudo mysql

MySQLに接続したら、下記コマンドでユーザーを作成します。

mysql> CREATE USER 'ユーザー名'@'接続元' IDENTIFIED BY 'パスワード';

接続元はUbuntuサーバーからローカルで接続するので、'localhost'にしました。

作成したユーザーに権限を付与する

ユーザーを作成しただけなので、権限を付与します。下記は設定例です。
GRANTの後は付与する権限、ONの後はレベル、TOの後はユーザー名、@の後は接続元、最後のWITH GRANT OPTIONは同じアクセス権やロールを他のユーザに付与する権利を持たせます。

mysql> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'ユーザー名'@'localhost' WITH GRANT OPTION;

MySQL8.0は、GRANTでユーザー作成と権限を同時に設定できなくなっているなど、5.7との変更点などあるようなので、どのバージョンの情報なのか気を付けておきましょう。

ここまで終了したら、 一旦MySQL サーバーへの接続を切断します。

mysql> exit

データベースを作成

CMS用のデータベースを作成するため、新しく作成したユーザーでMySQLサーバーに接続します。
下記コマンドの後、パスワードを入力して接続しましょう。

$ mysql -u ユーザー名 -p

MySQL サーバーに接続できたら、データベースを作成します。

mysql> CREATE DATABASE データベース名;

データベース名は64文字以内までのようです。無事作成できているか、データベース一覧を確認してみます。

mysql> SHOW DATABASES;

作成したデータベース名が確認できました。
ここまでで、Strapiに使うデータベースの準備は完了ですので、MySQL サーバーへの接続を切断して終了します。

おわりに

大文字と小文字の違いが気になったのですが、 MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含むopen_in_newには、“SQL キーワードでは大文字と小文字は区別されず、大文字と小文字は区別されません。 このマニュアルでは大文字を使用します。” とありますので、気にしなくても良いと思っています。お作法はありそうなので、機会があればエンジニア様に聞いてみようと思います。

これで基本的な環境準備が完了しました。
次はHTMLプロトタイプを作ります。