Ubuntu 26.04でMySQL 8.4をインストール&セキュリティ設定する完全ガイド

目次
- インストール前に準備しておくこと
- ステップ1 — APTリポジトリからMySQLをインストール
- ステップ2 — サービスの自動起動を設定
- ステップ3 — セキュリティ強化:
mysql_secure_installationと認証プラグイン - rootパスワードを使うには認証プラグインの変更が必要
- ステップ4 — データベースと専用ユーザーの作成
- ステップ5 — サンプルテーブルで動作確認
- 本番環境でさらに押さえておきたいこと
- まとめ
- 参考リンク
Ubuntu 26.04 LTSサーバーにMySQLをインストールし、本番環境ですぐに使える状態までセキュリティを固める一連の手順をまとめました。新規インスタンスを受け取って「どこから手を付ければいいんだろう」と悩んでいる方なら、このガイドのとおりに進めるだけで30分以内に安定稼働するデータベースサーバーが手に入ります。
- APTリポジトリ経由でのMySQL 8.4インストールとバージョン確認
systemdによるMySQLサービスの自動起動登録mysql_secure_installationでの基本セキュリティ強化mysql_native_password認証プラグインの有効化とrootパスワード設定- 専用データベース・ユーザーの作成とサンプルテーブルの投入まで
インストール前に準備しておくこと
本格的にコマンドを叩く前に、次の2つの条件を満たしているか確認します。この2つさえ揃っていれば、インストール途中で権限エラーに引っかかることはまずありません。
- Ubuntu 26.04サーバーインスタンスにSSHで接続できる環境
- root以外の一般ユーザーアカウントに
sudo権限が付与されている状態
OSのバージョンはlsb_release -aコマンドで確認できますし、クラウドプロバイダー(例: Vultr、AWS Lightsail、GCP Compute Engine)が発行する標準イメージなら、ubuntuユーザーがすでにsudo権限を持った状態で提供されます。
ステップ1 — APTリポジトリからMySQLをインストール

Ubuntu 26.04の標準APTリポジトリにはMySQL 8.4サーバーパッケージが含まれているので、外部リポジトリを別途追加する必要はありません。まずはパッケージインデックスを更新してからインストールを進めます。
sudo apt update
sudo apt install mysql-server -yインストールが終わったら、どのバージョンが入ったかを正確に確認しておきます。Ubuntu 26.04基準では8.4.x LTS系列が入ります。8.4は2032年までサポートされる長期サポートリリースなので、本番環境にも安心して採用できます。
mysql --version
# 出力例
mysql Ver 8.4.8-0ubuntu1 for Linux on x86_64 ((Ubuntu))mysql-apt-configパッケージを追加する必要があります。一般的なWeb・アプリのバックエンド用途であれば8.4 LTSで十分ですし、互換性の面でも有利です。ステップ2 — サービスの自動起動を設定
MySQLはsystemdユニットで管理されており、パッケージインストール直後は環境によって起動時の自動起動有無や即時実行状態が異なる場合があります。次の3つのコマンドで自動起動を登録し、現在のプロセスが正常に動いているかを確認しておきましょう。
sudo systemctl enable mysql
sudo systemctl start mysql
sudo systemctl status mysqlステータスがactive (running)と表示され、Main PIDにmysqldプロセスが捕捉されていれば正常です。出力はおおよそ次のようになります。
● mysql.service - MySQL Community Server
Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled)
Active: active (running)
Status: "Server is operational"万が一サービスが立ち上がらないときは、sudo journalctl -u mysql -eで直近のログを確認すれば、原因はほぼ即座に判明します。ディスク容量不足、ポート3306の競合、設定ファイルの構文エラーが定番の原因です。
ステップ3 — セキュリティ強化: mysql_secure_installationと認証プラグイン

インストール直後のMySQLには、匿名ユーザー、リモートrootアクセス、テストデータベースなど、本番環境にはふさわしくないデフォルト値がそのまま残っています。mysql_secure_installationスクリプトを一度実行するだけで、これらのリスク要因を手早く取り除けます。
sudo mysql_secure_installationスクリプトの問いには次のように答えていきます。各回答がセキュリティを一段階ずつ引き上げる効果を持ちます。
| 質問 | 推奨回答 | 意味 |
|---|---|---|
| VALIDATE PASSWORD COMPONENT | Y | パスワード検証プラグインを有効化 |
| Password Validation Policy | 2 (STRONG) | 記号・長さなど強いポリシーを適用 |
| Remove anonymous users? | Y | 匿名アカウントを削除 |
| Disallow root login remotely? | Y | リモートrootアクセスを遮断 |
| Remove test database? | Y | デフォルトのtest DBを削除 |
| Reload privilege tables? | Y | 変更内容を即時反映 |
rootパスワードを使うには認証プラグインの変更が必要
最新のMySQL 8.4パッケージはデフォルトでauth_socketプラグインをrootに適用するため、パスワードなしでsudo mysqlからのみ接続できる状態になっています。外部アプリケーションやGUIツール(例: DBeaver、MySQL Workbench)からrootで接続したい場合は、mysql_native_passwordを有効化する必要があります。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf[mysqld]セクションに次の1行を追加します。
[mysqld]
mysql_native_password=ON
user = mysql
# ... 既存の設定はそのまま保存したらサービスを再起動し、コンソールに入ってrootパスワードを明示的に設定します。
sudo systemctl restart mysql
sudo mysqlALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';
FLUSH PRIVILEGES;
EXIT;your_strong_passwordの箇所には、12文字以上で英大小文字・数字・記号を混ぜた強い文字列を入れてください。パスワードポリシーをSTRONGに設定している場合、単純な文字列は弾かれます。ステップ4 — データベースと専用ユーザーの作成
本番環境ではroot アカウントを直接使わず、アプリケーションごとに権限を絞ったユーザーを作って運用します。次はexample_dbというデータベースとexample_userアカウントを作成し、必要な権限だけを付与する例です。
mysql -u root -pCREATE DATABASE example_db;
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'dbuser_password';
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
GRANT CREATE ON *.* TO 'example_user'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'example_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;GRANT ALL PRIVILEGES ON example_db.*は、対象のデータベース内ではすべての操作を許可するという意味です。それ以外のDBにも触れるようにした下の2行は運用上の利便性のための設定なので、セキュリティポリシーが厳しい環境では省略し、必要になった時点で追加する方が安全です。
ステップ5 — サンプルテーブルで動作確認
最後に、新しく作ったユーザーでログインしてデータを投入し、正常に取得できるかを確認します。この段階まで問題なく進めば、バックエンドコード側で同じ認証情報を使って接続し、すぐ運用を開始できます。
mysql -u example_user -pSHOW DATABASES;
CREATE DATABASE example_demo;
USE example_demo;
CREATE TABLE services (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO services (name, description) VALUES
('Cloud Compute', '汎用ワークロード向けの仮想マシン'),
('Object Storage', 'S3互換の非構造化データストレージ'),
('Load Balancer', 'サーバーインスタンス間のトラフィック分散');
SELECT * FROM services;3行が自動採番のIDとタイムスタンプ付きできれいに出力されれば、インストール・セキュリティ・権限設定がすべて正常に終わったサインです。
本番環境でさらに押さえておきたいこと
- ファイアウォールルール — UFWで3306ポートは特定のアプリサーバーIPのみ許可。外部に開放しているとボット攻撃の格好の的になります。
- 自動バックアップ —
mysqldumpをcronに登録するか、Percona XtraBackupで日次スナップショットをS3に保管。 - スロークエリログ —
slow_query_log=1、long_query_time=1を有効にしておけば、1秒以上かかるクエリを自動記録できるためチューニングに重宝します。
まとめ
Ubuntu 26.04にMySQL 8.4をインストールし、セキュリティ強化と専用ユーザー分離まで一気に終えました。8.4 LTSは2032年までセキュリティパッチが提供されるので、新規プロジェクトの一次データベースとして安心して選択できます。次のステップとしては、マスター・スレーブ複製、ProxySQLによる読み取り負荷分散、Managed Databaseへの移行などを検討してみてください。
参考リンク
- Vultr Docs — How to Install MySQL on Ubuntu 26.04原文ガイド (英語)
- MySQL 8.4 Reference ManualMySQL公式マニュアル — 認証プラグインや権限システムの詳細
- Ubuntu Server DocumentationUbuntu公式サーバー運用ドキュメント
