環境構築ガイド：VirtualBox上のAlmaLinux 9.5にMySQLをインストールする手順

## はじめに

この記事では、VirtualBox上に構築した AlmaLinux 9.5 に MySQL をインストールする方法をご紹介します。

:::note warn
***最近、MySQL の環境構築を進める中で、AlmaLinuxのバージョンの違いによりインストールに苦戦しました。***
:::

そこで今回は、自分の備忘録も兼ねて、***同じような課題に直面している方々の参考になればと思い、この手順を記録として残します。***

## 書こうと思ったきっかけ
私の環境では、すでに VirtualBox 上に構築した AlmaLinux に MySQL を導入しています。

ただし、その環境は 1 年以上前に構築したもので、少し古いバージョンの AlmaLinux を使用しています。

:::note alert
***過去に投稿した備忘録記事を参考に環境構築を進めていましたが、最新バージョンでは設定がうまくいかず、エラーが発生しました（2025年1月5日時点）。***
:::

https://qiita.com/free-honda/items/fe0564241343e9e9937d

***このような経緯から、改めて AlmaLinux 9.5 に MySQL をインストールする方法を整理し、記録することにしました。***

## 少し困ったこと

MySQL の導入自体には直接関係ありませんが、***その後のセットアップを進める際に少し難しいエラーに直面しました。***

MySQL の導入が完了した後、以下のコマンドを使用して初期設定を行おうとしました。

```bash
sudo mysql_secure_installation
```

このコマンドを実行すると、最初に root ユーザーのパスワード変更を求められる画面が表示されます。

:::note warn
***しかし、そもそも root ユーザーのパスワードがどこに設定されているのか、どこで確認できるのかが分からず、一瞬混乱してしまいました。***
:::

以下のようなエラーが表示されました。

```bash
Error: Access denied for user 'root'@'localhost' (using password: YES)
```

***このエラーは、MySQL にログインしようとした際に、root ユーザーの認証に失敗した場合などに発生します。***

### 結論：root ユーザーの初期パスワードはログファイルに記録される
MySQL では、初回起動時に root ユーザーの初期パスワードが自動的にログファイルに記録される仕組みになっています。

:::note info
そのため、このログファイルを確認して初期パスワードを取得する必要があります（詳細は後述します）。
:::

***次回以降のセットアップ時に、この仕様を把握しておくと安心です！***

## 実際にインストールしてみた

ここでは、MacBookにVirtualBoxを導入し、AlmaLinux OS 9.5 Minimal ISOを使用してインストールを進める手順をご紹介します。

:::note alert
***ご自身の環境や使用しているISOイメージによっては、手順がうまくいかない場合もあります。***
:::

***その際は、エラーメッセージを確認し、適宜修正を行ってください。***

### AlmaLinux OS 9.5 Minimal ISOのダウンロード
以下の公式サイトから、AlmaLinux OS 9.5 Minimal ISOをダウンロードしてください。

https://almalinux.org/ja/get-almalinux/

:::note alert
**注意：**
***※ダウンロードするISOイメージは、WindowsとMacで異なる場合があります。***
:::

***事前にお使いの環境を確認してからダウンロードを行ってください。***

### 1. MySQLリポジトリの追加
まず、MySQL公式リポジトリをダウンロードして設定します。

```bash
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
```

このコマンドにより、MySQLの公式リポジトリがシステムに追加されます。

### 2. リポジトリの有効化を確認
次に、リポジトリが正しく有効になっているかを確認します。

```bash
sudo dnf repolist enabled | grep mysql
```

上記のコマンドを実行し、リポジトリがリストに表示されていれば、設定が正しく完了していることを確認できます。

### 3. MySQLサーバーのインストール
MySQLサーバーパッケージをインストールします。

```bash
sudo dnf install mysql-server
```

このコマンドで、MySQLサーバーがシステムにインストールされます。

### 4. MySQLサービスの起動と自動起動の有効化
インストールが完了したら、MySQLサービスを起動し、自動起動を有効化します。

```bash
sudo systemctl start mysqld
sudo systemctl enable mysqld
```

これにより、MySQLサービスが開始され、システム起動時に自動的に起動するよう設定されます。

:::note warn
MySQLは初回起動時に、```root```ユーザーのパスワードを自動生成します。
:::

この初期パスワードは、ログファイルで確認することができますので、以下のコマンドを実行してください。

```bash
sudo grep 'temporary password' /var/log/mysqld.log
```

**出力例:**

```bash
2025-01-04T00:00:00.000000Z 1 [Note] A temporary password is generated for root@localhost: XyZ123!abcd
```

この出力に表示される ```root@localhost``` の後に記載されている文字列（例: ```XyZ123!abcd```）が、初期パスワードです。

:::note
***初期パスワードの確認方法は、手順を忘れがちな部分でもあります。***
:::

***今回つまずいたことで、改めて重要性を再認識し、良い学びの経験となりました。***

### 5. 初期設定
MySQLの初期設定を行います。

```bash
sudo mysql_secure_installation
```

このコマンドでは以下を設定します。

:::note warn
- **rootパスワードの変更**
- **匿名ユーザーの削除**
- **リモートからのrootログインの禁止**
- **テストデータベースの削除**
- **権限テーブルのリロード**
:::

対話形式で設定を進めていくため、指示に従いながら入力を進めてください。

### 6. MySQLにログイン
初期設定が完了したら、MySQLにログインして動作を確認します。

```bash
mysql -u root -p
```

上記のコマンドを実行すると、パスワード入力を求められます。***正しいパスワードを入力すると、以下のようにMySQLにログインできます。***

**ログイン例:**

```bash
[honda@HONDA-TEST ~]$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.36 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
```

## まとめ
最後までお読みいただき、ありがとうございました。

:::note warn
***今回は、バージョンの違いによって発生したインストールエラーに直面しましたが、冷静に原因を特定し、解決することができました。***
:::

この記事が、***同じような課題に直面している方の技術的な助けとなれば幸いです！***

## 関連記事

https://qiita.com/free-honda/items/6605f58f8ef317b10fc8

https://qiita.com/free-honda/items/78d22d9d223787908c3b

https://qiita.com/free-honda/items/b8e9e483b4836117cbd0