自前のブログ作り④ ー 環境準備: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の情報をみていて大文字と小文字の違いが気になったが、 MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含むopen_in_newには、“SQL キーワードでは大文字と小文字は区別されず、大文字と小文字は区別されません。 このマニュアルでは大文字を使用します。” とあるので気にしないことにした。お作法はありそうなので、機会があればエンジニア様に聞いてみたいところ。

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