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プロトタイプを作ります。