Ubuntu 21.04に最新版のMySQL 8.0をインストール

Ubuntu 21.04に最新版のMySQL 8.0をインストール サーバー

Ubuntu 21.04へ最新版のMySQL 8.0をインストールしていきます。
公式の手順に従って、MySQLのインストールを行います。

本記事の内容

  • MySQLのシステム要件
  • MySQLのインストール
  • MySQLの初期設定(セキュリティ)

それでは、上記に沿って解説していきます。

MySQLのシステム要件

現時点(2021年5月末)でのMySQLの最新バージョンは、8.0.25です。
この最新バージョンは、2021年4月24日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応となります。

  • Windows
  • macOS
  • Linux

Linuxは、次のディストリビューションに対応しています。

  • Ubuntu Linux
  • Debian Linux
  • SUSE Linux Enterprise Server
  • Red Hat Enterprise Linux / Oracle Linux
  • Fedora

他には、Solarisにまで正式に対応しています。
ソース自体が公開されているため、ビルド次第でどこでもインストール可能です。

そして、今回は現時点(2021年5月)時点で最新のUbuntu 21.04にインストールします。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=21.04
DISTRIB_CODENAME=hirsute
DISTRIB_DESCRIPTION="Ubuntu 21.04"

なお、最新版となるUbuntuのインストールに関しては、次の記事で解説しています。
仮想環境を使って、手軽に検証できます。

以上、MySQLのシステム要件についての説明でした。
次は、MySQLをインストールしていきます。

MySQLのインストール

インストールは、公式が用意しているdebパッケージを利用します。
最新版をインストールするには、この方法が確実です。

インストールは、次の3つの処理に分けて説明します。

  • debパッケージのダウンロード
  • debパッケージのインストール
  • aptコマンドによるインストール

debパッケージのダウンロード

MySQL公式のダウンロードページ
https://dev.mysql.com/downloads/mysql/

OSと対象バージョンを選択します。
各OSの最新版も選ぶことが可能です。

選択すると、該当するパッケージの一覧が表示されます。
先頭に表れる次のリンクを選択します。

ページを遷移していくと、現状では「mysql-apt-config_0.8.17-1_all.deb」がダウンロード可能です。
では、ダウンロードは次のコマンドで行います。

$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb

ダウンロードが完了しました。
保存されたファイルを確認します。

$ ls
mysql-apt-config_0.8.17-1_all.deb

debパッケージのインストール

debパッケージをdpkg ユーティリティーでインストールします。

$ sudo dpkg -i mysql-apt-config_0.8.17-1_all.deb

上記を実行すると、次の画面が表示されます。

若干、ややこしいですが下線を引いた「Ok」を選択して、Enter。
すると、元の画面に戻ります。

$ sudo dpkg -i mysql-apt-config_0.8.17-1_all.deb
Selecting previously unselected package mysql-apt-config.
(Reading database ... 65989 files and directories currently installed.)
Preparing to unpack mysql-apt-config_0.8.17-1_all.deb ...
Unpacking mysql-apt-config (0.8.17-1) ...
Setting up mysql-apt-config (0.8.17-1) ...
Warning: apt-key should not be used in scripts (called from postinst maintainerscript of the package mysql-apt-config)
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
$

先ほどの指示通りに「apt-get update」を実行します。

$ sudo apt-get update

以上より、リポジトリへの追加が完了です。

aptコマンドによるインストール

aptコマンドでインストールを行っていきます。

$ sudo apt install mysql-server

上記コマンドを実行すると、次の問いが現れます。

After this operation, 265 MB of additional disk space will be used.
Do you want to continue? [Y/n]

MySQLをインストールすると、265MBのディスクを利用するようです。
そのことの確認です。
もちろん、「Y」を入力して、Enter。

処理が進むと、次の画面に切り替わります。

管理者であるrootのパスワードを入力します。
パスワードを入力した後に「Ok」を選択して、Enter。

パスワードの確認画面です。

先ほど設定したパスワードを入力した後に「Ok」を選択して、Enter。

デフォルトの認証オプションの選択です。

新しい方式のcaching_sha2_passwordを選択するなら、そのまま「Ok」を選択して、Enter。
旧方式のmysql_native_passwordを選択するなら、「Use Legacy」の方を選択します。

この設定は、後でも変更可能です。
とりあえずは、おススメの新しい方式でいきます。

処理を進めると、画面が元に戻ります。
次のように表示されたら、インストールが完了しています。

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.
$

以上、MySQLのインストールを説明しました。
次は、MySQLの初期設定を行います。

MySQLの初期設定(セキュリティ)

ここでは、主にセキュリティを高める設定を行います。
例えば、デフォルトのままだと、リモートでのrootログインを認めています。

そのようなリスキーの設定を変更していくということです。
付属のスクリプトを実行します。
それを実行すれば、「はい」か「いいえ」に答えるだけで設定できます。

まずは、その付属スクリプトを実行します。

$ sudo mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:

実行すると、rootのパスワードを確認されます。
インストール時に入力したパスワードを入力します。

パスワードの妥当性チェック用のコンポーネントの利用確認です。

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:

セキュリティは出来る範囲で高くしましょう。
「y」を入力して、Enter。

パスワードの複雑さのレベルに関する確認です。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

ここは皆さんのお好きなように。
今回は、中間をとって「1」を入力して、Enter。

Using existing password for root.

Estimated strength of the password: 50
Change the password for root ? ((Press y|Y for Yes, any other key for No) :

現在利用中のrootのパスワードをチェックされました。
50と言う数値が結果として出ました。
そのままrootのパスワードを変更するかどうかの確認となります。

rootに関しては、リモートアクセスを拒否するように設定します。
そのため、rootのパスワードの複雑さはそれほど重要ではありません

よって、rootのパスワードは変更しません。
「n」を入力して、Enter。

... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) :

テスト用ユーザー(anonymous user)の扱いについての確認です。
できる限りで不要なユーザーは削します。
したがって、「y」を入力して、Enter。

anonymous userの削除が成功したようです。
次は、rootによるリモートアクセスの可否を確認しています。

Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

これは、絶対に拒否します。
よって、「y」を入力して、Enter。

rootによるリモート接続の拒否設定が成功したようです。
次は、テスト用に用意された「tets」データベースを削除するかどうかの確認です。

Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

できる限りで不要なモノは、消しましょう。
したがって、「y」を入力して、Enter。

「test」データベース関連の削除が成功したようです。
最後に、今までの設定をすぐに反映するかどうかの確認です。

- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

すぐに反映しましょう。
よって、「y」を入力して、Enter。

設定の反映が成功したようです。

Success.

All done!
$

これにて、とりあえずは一安心です。
どんなにrootのパスワードが簡単でも、rootによるリモート接続はできません。

以上、MySQLの初期設定(セキュリティ)についての説明でした。

しかし、このままではrootしかいないデータベースです。
それにリモート接続(外部接続)もできません。

そこで、外部接続が可能な設定を行う必要が出てきます。
次の記事において、それらに関してはまとめて解説しています。

タイトルとURLをコピーしました