RHEL8 betaでMySQL

2018年11月15日頃にRed Hat Enterprise Linuxの最新版8.0のベータ版がリリースされました。
Fedora28がベースとなっていてカーネルも従来RHEL7の3系から4.18となっている一方、
デフォルトで入っているミドルウェアもMySQL8、MariaDB10.3、PostgreSQL10など比較的新しくなっていることが少し話題となりました。

今回はRHEL6以来再びバンドルされるようになったMySQLをRHEL8でインストールして触ってみます。

# 事前準備
Red Hatユーザーアカウントを持っていない場合はまず新規登録を行い、isoファイルをダウンロードしてきます。
アカウントを新規作成した場合は一度ポータルサイトにログインし、利用条件にチェックを入れて承諾しておく必要があります。

# RHEL8 betaをVirtualBox上にインストール
以下のマニュアルに沿ってVirtualBox上にRHEL8 betaインスタンスを作ります。
https://developers.redhat.com/rhel8/install-rhel8-vbox/

yumの実行にRed Hat Subscription Managementへの登録が必要なので、subscription-managerコマンドを実行して先程使用したRed Hatユーザーアカウントのユーザー名とパスワードを入力します。

```
subscription-manager register --auto-attach
```

上記が完了したらyumでMySQLをインストールします。

```
# yum install mysql

Dependencies resolved.
=======================================================================================
 Package Arch   Version                    Repository                             Size
=======================================================================================
Installing:
 mysql   x86_64 8.0.12-6.el8+1923+5642a751 rhel-8-for-x86_64-appstream-beta-rpms 9.0 M
Installing dependencies:
 mysql-common
         x86_64 8.0.12-6.el8+1923+5642a751 rhel-8-for-x86_64-appstream-beta-rpms 137 k
 mariadb-connector-c-config
         noarch 3.0.6-2.el8                rhel-8-for-x86_64-appstream-beta-rpms  13 k
Enabling module streams:
 mysql          8.0                                                                   

Transaction Summary
=======================================================================================
Install  3 Packages

Total download size: 9.2 M
Installed size: 58 M
Is this ok [y/N]:
```

バージョンは8.0.12ですね。（今の最新版は8.0.13）
インストールが終わると関連コンポーネントが追加されるので、続いてMySQLサーバ本体をインストールします。

```
# yum install mysql-server

Dependencies resolved.
=======================================================================================
 Package
        Arch   Version                     Repository                             Size
=======================================================================================
Installing:
 mysql-server
        x86_64 8.0.12-6.el8+1923+5642a751  rhel-8-for-x86_64-appstream-beta-rpms  25 M
Installing dependencies:
 mecab  x86_64 0.996-1.el8+1521+e4919bed.9 rhel-8-for-x86_64-appstream-beta-rpms 396 k
 protobuf-lite
        x86_64 3.5.0-7.el8                 rhel-8-for-x86_64-appstream-beta-rpms 149 k
 mysql-errmsg
        x86_64 8.0.12-6.el8+1923+5642a751  rhel-8-for-x86_64-appstream-beta-rpms 512 k

Transaction Summary
=======================================================================================
Install  4 Packages

Total download size: 26 M
Installed size: 171 M
Is this ok [y/N]:
```

以上インストールが終わったらMySQLを起動します。

```
# systemctl start mysqld
```

標準パッケージと異なりデフォルトパスワードは生成されないようです。（内部的に --initialize-insecureオプションが効いている模様）

```
# vi /var/log/mysql/mysqld.log
...
[Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
```

なのでこのままmysql_secure_installationを実行します。

```
# mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No:

...

All done!
```

これでログイン可能となります。

```
# mysql -uroot -p
```

# その他
default_authentication_pluginのデフォルト値は8.0以降のオフィシャル標準であるcaching_sha2_passwordではなくmysql_native_passwordに変えられているようです。アプリの対応状況などを鑑みてのことでしょうか？

```
mysql> show variables like '%auth%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | mysql_native_password |
+-------------------------------+-----------------------+
1 row in set (0.00 sec)
```



またMySQL ShellやMySQL Routerは入っていないなのでこれらを使う場合はOracle標準のパッケージが必要です。