UbuntuでMariaDBをインストールする方法【20.04/22.04/24.04対応】設定・接続・トラブル対処まで完全解説

目次

UbuntuにMariaDBをインストールする最短手順(20.04 / 22.04 / 24.04対応)

UbuntuでMariaDBをすぐに使いたい場合は、以下の手順を実行するだけでインストールから起動確認まで完了します。特別な理由がない限り、Ubuntu標準リポジトリ版のインストールが最も安全で安定しています。

① パッケージ情報を更新

sudo apt update
sudo apt upgrade -y

② MariaDBをインストール

sudo apt install -y mariadb-server mariadb-client

インストール中に特別な設定は不要です。完了後、自動的にMariaDBサービスが起動します。

③ MariaDBが起動しているか確認

sudo systemctl status mariadb

active (running) と表示されれば正常に起動しています。

④ 自動起動を有効化(通常は不要ですが確認推奨)

sudo systemctl enable mariadb

⑤ MariaDBに接続して動作確認

sudo mysql

以下のようなプロンプトが表示されれば成功です。

MariaDB [(none)]>

終了する場合は exit; と入力します。

インストール後に必ず行うセキュリティ初期設定

インストール直後のMariaDBは最小限のセキュリティ設定のみ適用されています。必ず以下を実行してください。

sudo mysql_secure_installation

基本的には以下の回答で問題ありません。

  • 匿名ユーザー削除 → Y
  • rootのリモートログイン禁止 → Y
  • テストデータベース削除 → Y
  • 権限テーブル再読み込み → Y

これで、Ubuntu上に安全なMariaDB環境が構築されます。

Ubuntuバージョン別:インストールされるMariaDBのバージョン

  • Ubuntu 20.04 → MariaDB 10.3 系
  • Ubuntu 22.04 → MariaDB 10.6 系
  • Ubuntu 24.04 → MariaDB 10.11 系(LTS)

通常はUbuntu標準版で十分です。最新機能が必要な場合のみ公式リポジトリの利用を検討してください。

インストールできない・起動しない場合の即チェック

  • sudo systemctl status mariadb でエラー確認
  • sudo journalctl -xe で詳細ログ確認
  • df -h でディスク容量不足を確認

多くの場合、ディスク不足か設定ファイルの誤記が原因です。

Ubuntuのバージョン別:どのMariaDBを選ぶべきか

UbuntuでMariaDBを使う場合、基本的には標準リポジトリ版を使うのが最も安全です。セキュリティ更新や依存関係の整合性が保たれるため、初心者〜中級者は標準版で問題ありません。

Ubuntu標準リポジトリ版(推奨)

  • Ubuntu 20.04 → MariaDB 10.3 系
  • Ubuntu 22.04 → MariaDB 10.6 系
  • Ubuntu 24.04 → MariaDB 10.11 系(LTS)

特別な理由がない限り、このバージョンで十分実用的です。

最新バージョンを使いたい場合(公式リポジトリ追加手順)

最新機能が必要な場合は、MariaDB公式リポジトリを追加できます。apt-keyは現在非推奨のため、signed-by方式を使用します。

① GPGキーを保存

sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://mariadb.org/mariadb_release_signing_key.asc \
  | sudo gpg --dearmor -o /etc/apt/keyrings/mariadb.gpg

② Ubuntuのコードネームを確認

lsb_release -cs

例:

  • 20.04 → focal
  • 22.04 → jammy
  • 24.04 → noble

③ 公式リポジトリを追加(例:10.11系)

echo "deb [signed-by=/etc/apt/keyrings/mariadb.gpg] \
https://mirror.mariadb.org/repo/10.11/ubuntu \
$(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/mariadb.list

④ パッケージ更新とインストール

sudo apt update
sudo apt install mariadb-server mariadb-client

公式リポジトリを使う際の注意点

  • Ubuntu標準版よりも新しい機能が使える
  • 将来的な依存関係の競合リスクがある
  • 運用サーバーでは十分な検証が必要

本番環境では、安定性を優先するか最新機能を優先するかを明確に判断しましょう。

現在インストールされているMariaDBのバージョン確認方法

mysql --version

例:

mysql  Ver 15.1 Distrib 10.6.16-MariaDB

バージョンを明示しておくことで、トラブルシューティングや移行作業が容易になります。

MariaDBの初期設定(mysql_secure_installation)完全ガイド

MariaDBをインストールした直後は、最低限のセキュリティ設定しか適用されていません。安全に運用するため、必ず以下のコマンドを実行してください。

sudo mysql_secure_installation

実行すると、いくつかの質問が表示されます。基本的には以下の回答で問題ありません。

推奨回答一覧

  • Enter current password for root: → そのままEnter(初回は未設定)
  • Switch to unix_socket authentication? → Y(Ubuntuでは通常推奨)
  • Change the root password? → N(unix_socket使用時)
  • Remove anonymous users? → Y
  • Disallow root login remotely? → Y
  • Remove test database and access to it? → Y
  • Reload privilege tables now? → Y

これで基本的なセキュリティ対策は完了です。

rootでログインできない原因(Access deniedエラー)

Ubuntuでは、rootユーザーはデフォルトでunix_socket認証を使用します。そのため、通常のパスワードログインはできません。

症状例

mysql -u root -p

Access denied for user 'root'@'localhost'

正しいログイン方法(Ubuntu標準)

sudo mysql

これが最も安全で推奨される方法です。

rootをパスワード認証に変更する方法(必要な場合のみ)

外部ツールやアプリケーションからroot接続する必要がある場合のみ、認証方式を変更します。

① MariaDBに接続

sudo mysql

② 認証プラグインを変更

ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY '強力なパスワード';

FLUSH PRIVILEGES;

③ 変更確認

SELECT user, host, plugin FROM mysql.user;

mysql_native_password になっていれば変更成功です。

現在の認証方式を確認する方法

sudo mysql -e "SELECT user, host, plugin FROM mysql.user;"

主な認証方式:

  • unix_socket → Ubuntu標準、安全
  • mysql_native_password → パスワード認証

特別な理由がない限り、rootはunix_socketのまま運用するのが安全です。

よくあるエラーと対処

ERROR 1698 (28000): Access denied for user ‘root’@’localhost’

  • 原因:パスワードログインを試している
  • 解決:sudo mysql でログインする

mysql_secure_installationが見つからない

  • which mysql_secure_installation で確認
  • 未インストールなら sudo apt install mariadb-server

文字コードをutf8mb4に設定する(文字化けを防ぐ)

MariaDBで日本語や絵文字を安全に扱うためには、utf8mb4を使用することが推奨されます。これを設定しないと、文字化けやデータ損失の原因になります。

① 設定ファイルを編集

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

以下を [mysqld] セクションに追加または修正します。

[mysqld]
character-set-server = utf8mb4
collation-server     = utf8mb4_general_ci

② MariaDBを再起動

sudo systemctl restart mariadb

③ 設定確認

sudo mysql -e "SHOW VARIABLES LIKE 'character_set%';"

utf8mb4 と表示されれば成功です。

データベース作成時にutf8mb4を指定する方法(推奨)

既存設定に関係なく、安全に文字コードを指定したい場合は、データベース作成時に明示します。

CREATE DATABASE sample_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

これにより、そのデータベース内のテーブルはutf8mb4を継承します。

アプリ接続用ユーザーの作成と権限設定

本番環境では、rootユーザーをアプリ接続に使用してはいけません。専用ユーザーを作成し、必要最小限の権限のみ付与します。

① MariaDBにログイン

sudo mysql

② ユーザー作成(ローカル接続用)

CREATE USER 'app_user'@'localhost'
IDENTIFIED BY '強力なパスワード';

③ データベースへの権限付与

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'localhost';

FLUSH PRIVILEGES;

リモート接続用ユーザーの作成(必要な場合のみ)

外部サーバーやクラウド環境から接続する場合のみ設定します。

CREATE USER 'app_user'@'%'
IDENTIFIED BY '強力なパスワード';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

※注意:「%」は全ホスト許可を意味します。本番環境では特定IPを指定する方が安全です。

現在のユーザーと権限を確認する方法

SELECT user, host FROM mysql.user;

SHOW GRANTS FOR 'app_user'@'localhost';

よくある権限エラーと対処

Access denied for user ‘app_user’

  • ホスト指定が違う(localhostと%の違い)
  • FLUSH PRIVILEGESを実行していない
  • 接続先データベース名が間違っている

Unknown database

  • データベース名のスペルミス
  • 対象データベースに権限がない

MariaDBでリモート接続を許可する方法(外部から接続できない場合の対処)

MariaDBはデフォルトでローカル接続のみ許可されています。外部サーバーやクラウド環境から接続する場合は、以下の設定が必要です。

① bind-address を変更する

設定ファイルを編集します。

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

以下の行を探します:

bind-address = 127.0.0.1

外部接続を許可する場合は、次のように変更します。

bind-address = 0.0.0.0

保存後、MariaDBを再起動します。

sudo systemctl restart mariadb

② ファイアウォールで3306ポートを開放

UbuntuでUFWを使用している場合:

sudo ufw allow 3306
sudo ufw reload

セキュリティを高めるには、接続元IPを指定してください。

sudo ufw allow from 192.168.1.10 to any port 3306

③ リモート接続用ユーザーを作成

CREATE USER 'app_user'@'%'
IDENTIFIED BY '強力なパスワード';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

より安全にする場合:

CREATE USER 'app_user'@'192.168.1.10'
IDENTIFIED BY '強力なパスワード';

外部から接続できない場合のチェックリスト

1. MariaDBが起動しているか

sudo systemctl status mariadb

2. ポート3306が待ち受けているか

sudo ss -tulnp | grep 3306

0.0.0.0:3306 になっていればOKです。

3. クラウド環境の場合(AWS / GCP / VPS)

  • セキュリティグループで3306が開いているか
  • 外部ファイアウォールがブロックしていないか

4. エラーメッセージ別の原因

Can’t connect to MySQL server

  • ポートが閉じている
  • bind-address未変更
  • ファイアウォール遮断

Access denied for user

  • ユーザーのhost指定が違う
  • パスワード誤り
  • 権限未付与

Connection timed out

  • クラウド側のセキュリティ設定
  • ネットワーク経路の問題

セキュリティ上の重要注意

  • 本番環境では「%」指定は避ける
  • 可能ならVPN経由で接続する
  • SSL/TLS接続を検討する
  • rootのリモート接続は許可しない

MariaDBが起動しない場合の対処(failedエラー)

① サービス状態を確認

sudo systemctl status mariadb

② 詳細ログを確認

sudo journalctl -xe
sudo cat /var/log/mysql/error.log

③ よくある原因

  • 設定ファイルの記述ミス
  • ディスク容量不足
  • ポート競合(既にMySQLが動作中)

④ ディスク容量確認

df -h

Access denied エラーの原因まとめ

  • パスワード誤り
  • ユーザーのhost指定ミス(localhostと%の違い)
  • FLUSH PRIVILEGES未実行
  • rootを通常ログインしようとしている(sudo mysqlが必要)

最低限のパフォーマンス改善(初心者向け)

高度なチューニングは不要ですが、最低限以下を確認してください。

① スロークエリログを有効化

50-server.cnf に追加:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

再起動:

sudo systemctl restart mariadb

② インデックスの確認

遅いクエリにはインデックスが不足している可能性があります。

EXPLAIN SELECT * FROM sample_table WHERE column_name = 'value';

③ サーバーリソース確認

top
htop

メモリ不足の場合はサーバープランの見直しを検討してください。

よくある質問(FAQ)

Ubuntu 22.04でMariaDBのバージョンを固定するには?

apt-mark hold mariadb-server を使用します。

rootパスワードを忘れた場合のリセット方法は?

セーフモード起動後にパスワード再設定が可能です。別記事で詳しく解説しています。

MariaDBのポート番号を変更するには?

50-server.cnfport = 3307 のように変更し、再起動します。

まとめ:UbuntuでMariaDBを安全に使うために

  • 標準リポジトリ版を使用するのが最も安全
  • mysql_secure_installationは必ず実行
  • rootでのアプリ接続は禁止
  • リモート接続は必要な場合のみ有効化
  • トラブル時はログ確認が最優先

ここまでの手順で、Ubuntu上に安全かつ実用的なMariaDB環境を構築できます。