mysql8インストールと初期設定、ユーザー作成まで[Vagrant+CentOS7]

web
mysql8インストールと初期設定、ユーザー作成まで[Vagrant+CentOS7]

どうもー・ω・ガッチ(@gatchsite)です。

Vagrant を使って CentOS7 の開発環境を構築しており、mysql のインストールから初期設定で、ユーザー作成で少しはまったので、記事にしました。

mysql8 のインストール方法が知りたい。 初期設定の方法も知りたい。データベース作成、ユーザー作成もしたい。こんな方に読んでもらえたら嬉しいです。

WEB 制作を 8 年ほどしておりある程度の知識はあったのですが、 mysql8 では仕様変更して今までの方法では設定できない部分もあるので参考にしてもらえればと思います。

環境によって、異なる部分もあるかと思いますので確認した環境を記載しています。 Vagrant 使っていますが、CentOS7 であれば大丈夫かと思います。

【host 環境】 OS: MacOS 10.14.1 (Mojave) vagrant: 2.2.0 virtualBox: 5.2.20

【vagrant 環境】 OS:centOS7

記事の内容はこちら

mysql8 のインストール

mysql8 のインストールは、yum コマンドを使用しておこないます。 CentOS を使う場合は、一般的ですね。面倒な管理を行ってくれるので便利です。

yum にリポジトリを追加

インストールするには、yum で使えるリポジトリに mysql8 のリポジトリを追加する必要があります。

リポジトリ追加は、以下のコマンドを実行します。

$ sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

sudo に関しては、必要ない場合もあるかと思いますので、環境に合わせて使用してください。

Vagrant の provision に設定する際は、sudo あったほうが良いかと思います。

リポジトリが追加できずエラーになる場合

上記のコマンドでリポジトリ追加できず、エラーになる場合があります。 僕も実際にエラーになりインストールできませんでした。

その場合は、yum のモジュールアップデートで解決しますので試してください。 nss と curl のモジュールを更新しています。

$ sudo yum -y update nss curl

mysql8 のインストール

リポジトリ追加が完了したら、mysql8 本体をインストールします。

$ sudo yum -y install mysql-community-server

mysql8 の確認

インストールできたかどうかを確認します。

$ myslq --version

mysql8 の初期設定

初期設定は、root パスワードの確認と、初期設定コマンド(mysql_secure_installation) の実行でおこないます。

root パスワードの確認

mysql8 はインストール時に root ユーザーのパスワードがあるので、それを確認します。 root ユーザーのパスワードはあとで使用するのでコピー等して控えておいてください。

$ sudo cat /var/log/mysqld.log | grep root

初期設定コマンドの実行

初期設定には、mysql_secure_installation コマンドを使用します。 このコマンドは、root ユーザーのパスワード設定、匿名ユーザーの削除、リモートからの root ログイン禁止、test データベース削除などが行えます。

$ mysql_secure_installation

実行すると、以下の順で入力を求められますので、順番に入力していきましょう。

  1. root パスワードの入力。調べたデフォルトの root ユーザーのパスワードを入力します。[enter]
  2. 新しく設定する root ユーザーのパスワードを入力します。[enter]
  3. パスワードの確認でもう1度入力します。[enter]
  4. 匿名ユーザーを削除するか聞かれるので、空欄のまま[enter] ※匿名ユーザーを削除します
  5. リモートからの root ログインを禁止するか聞かれるので、空欄のまま[enter] ※禁止します
  6. test データベースを削除するか聞かれるので、空欄のまま[enter] ※削除します
  7. 権限の変更を更新するか聴かれるので、空欄のまま[enter] ※更新します

以上で、初期設定は完了です。

詳細の設定を行う場合は、 /etc/my.cnf を更新してみてください。

mysql の起動

起動するには、CentOS7 のシステムコントロールを使用します。

$ sudo systemctl start mysqld
オススメプログラミングスクール
  • SkillHacks : Rubyを学びたい方。動画教材とLINE@による無制限サポート
  • TechAcademy : php/wordpressを学びたい方。現役エンジニアのマンツーマン
  • CodeCamp : Pythonを学びたい方。データサイエンス初級をオンラインで

おまけに自動起動の設定(CentOS7 の場合)

centOS の起動時に自動で mysql8 も起動するように設定しておきます。

$ sudo systemctl enable mysqld

mysql へログイン確認

いよいよデータベース作成、ユーザー作成に入っていきます。 まずは root ユーザーで mysql へのログインします。

$ mysql -u root -p

-u でログインするユーザーを指定しています。 -p でパスワードを使用することを指定しています。

入力後に、パスワードの入力を求められるので、mysql_secure_installation で設定した新しいパスワードを入力します。

mysql8 のデータベース作成

データベースの作成は、以下のコマンドで実行します。

mysql> create database wp;

※wp の部分はデータベース名なので、作りたいデーターベース名に変更して使ってください。

mysql8 のユーザー作成

mysql8 からユーザーの作成は、3ステップしっかりと必要になりました。

  1. ユーザーの作成
  2. ユーザ権限の付与
  3. 権限の更新

mysql5 系では、作成と権限付与を同時にできたので、mysql8 にして grant 分でユーザー作成しようとしたらエラーになったので少しハマりました、、、

ますは、以下の sql でユーザーを作成します。

mysql> create user 'wp'@'localhost' identified  by 'パスワード';

上記 sql のパスワード部分は、大文字英字、小文字英字、数字、記号を含めたものを使用して下さい。デフォルトのセキュリティ設定を使用しているためです。

wp 部分は、データベース名なので、先ほど作成したデータベースの名前を使用します。

次にユーザーに権限を付与します。

mysql> grant all on wp_user.* to 'wp'@'localhost' with grant option;

wp_user.* 部分の wp は、ユーザー名を指定します。上記の場合は、wp_user ユーザーに wp データベースへの全権限を付与しています。

最後に、権限を更新します。

mysql> gflush privileges;

wordpress の DB 設定でエラーになる場合

wordpress などプログラムから mysql へ接続しデータのやりとりを行うと思うのですが、 その際に mysql8 の場合エラーになることがあります。

その場合は、ユーザーを作成以下のコマンドで行ってください。

mysql> create user 'wp'@'localhost' identified with mysql_native_password by 'パスワード';

with mysql_native_password という記載を追加しています。

### 認証方式が変更になっていた

mysql8 から DB 接続のデフォルトの方式が変更になったようです。

mysql5 系までは、mysql_native_password という認証方式で、 mysql8 からは、caching_sha2_password という認証方式のようです。

以上のコマンドは、その認証方式を以前の mysql_native_password を使いますと宣言しています。

詳しくはこちらの記事を参考にさせてもらいましたので、気になる方は読んでみてください。 MySQL8.0 新機能 (caching_sha2_password 認証プラグイン)

まとめ

mysql8 のインストールから初期設定、データベース作成、ユーザー作成についてまとめました。

WEB 制作の経験がなかったり、サーバーの設定はしたことがない。という場合、 WEB で調べただけで設定しようとするとハマってしまうことが多々あるかと思います。 僕もよくハマってますが笑

mysql8 もバージョンアップによって仕様変更があり、ちょっとした違いでハマる部分があったかと思います。 バージョン違いによるハマりポイントを共有して少しでも多くの人が幸せになれたらと思います。

まだ mysql8 に関しての記事は少ない気もしていますので、ぜひよかったらシェアしてもらえたら嬉しいです。

オススメプログラミングスクール
  • SkillHacks : Rubyを学びたい方。動画教材とLINE@による無制限サポート
  • TechAcademy : php/wordpressを学びたい方。現役エンジニアのマンツーマン
  • CodeCamp : Pythonを学びたい方。データサイエンス初級をオンラインで

関連の記事を読んでみる