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

2026年4月30日
ビュー 1
コメント0
この記事は以下の言語でもご覧いただけます: 한국어

目次

Ubuntu 26.04 LTSサーバーにMySQLをインストールし、本番環境ですぐに使える状態までセキュリティを固める一連の手順をまとめました。新規インスタンスを受け取って「どこから手を付ければいいんだろう」と悩んでいる方なら、このガイドのとおりに進めるだけで30分以内に安定稼働するデータベースサーバーが手に入ります。

インストール前に準備しておくこと

本格的にコマンドを叩く前に、次の2つの条件を満たしているか確認します。この2つさえ揃っていれば、インストール途中で権限エラーに引っかかることはまずありません。

  • Ubuntu 26.04サーバーインスタンスにSSHで接続できる環境
  • root以外の一般ユーザーアカウントにsudo権限が付与されている状態

OSのバージョンはlsb_release -aコマンドで確認できますし、クラウドプロバイダー(例: Vultr、AWS Lightsail、GCP Compute Engine)が発行する標準イメージなら、ubuntuユーザーがすでにsudo権限を持った状態で提供されます。

ステップ1 — APTリポジトリからMySQLをインストール

Linuxターミナルで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))

ステップ2 — サービスの自動起動を設定

MySQLはsystemdユニットで管理されており、パッケージインストール直後は環境によって起動時の自動起動有無や即時実行状態が異なる場合があります。次の3つのコマンドで自動起動を登録し、現在のプロセスが正常に動いているかを確認しておきましょう。

sudo systemctl enable mysql
sudo systemctl start mysql
sudo systemctl status mysql

ステータスがactive (running)と表示され、Main PIDmysqldプロセスが捕捉されていれば正常です。出力はおおよそ次のようになります。

● 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 mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';
FLUSH PRIVILEGES;
EXIT;

ステップ4 — データベースと専用ユーザーの作成

本番環境ではroot アカウントを直接使わず、アプリケーションごとに権限を絞ったユーザーを作って運用します。次はexample_dbというデータベースとexample_userアカウントを作成し、必要な権限だけを付与する例です。

mysql -u root -p
CREATE 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 -p
SHOW 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=1long_query_time=1を有効にしておけば、1秒以上かかるクエリを自動記録できるためチューニングに重宝します。

まとめ

Ubuntu 26.04にMySQL 8.4をインストールし、セキュリティ強化と専用ユーザー分離まで一気に終えました。8.4 LTSは2032年までセキュリティパッチが提供されるので、新規プロジェクトの一次データベースとして安心して選択できます。次のステップとしては、マスター・スレーブ複製、ProxySQLによる読み取り負荷分散、Managed Databaseへの移行などを検討してみてください。

参考リンク

閲覧統計 (過去30日間)
PV 1UV 1
이 글이 도움이 되셨나요? 의견을 들려주세요!
지금까지 0명이 의견을 남겼어요
아직 댓글이 없어요. 첫 댓글을 남겨보세요!