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

f:id:media-gatch:20181218201755j:plain

どうもー・ω・ガッチ(@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

おまけに自動起動の設定(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に関しての記事は少ない気もしていますので、ぜひよかったらシェアしてもらえたら嬉しいです。