- 1 UbuntuにMariaDBをインストールする最短手順(20.04 / 22.04 / 24.04対応)
- 2 Ubuntuのバージョン別:どのMariaDBを選ぶべきか
- 3 最新バージョンを使いたい場合(公式リポジトリ追加手順)
- 4 現在インストールされているMariaDBのバージョン確認方法
- 5 MariaDBの初期設定(mysql_secure_installation)完全ガイド
- 6 rootでログインできない原因(Access deniedエラー)
- 7 rootをパスワード認証に変更する方法(必要な場合のみ)
- 8 現在の認証方式を確認する方法
- 9 よくあるエラーと対処
- 10 文字コードをutf8mb4に設定する(文字化けを防ぐ)
- 11 データベース作成時にutf8mb4を指定する方法(推奨)
- 12 アプリ接続用ユーザーの作成と権限設定
- 13 リモート接続用ユーザーの作成(必要な場合のみ)
- 14 現在のユーザーと権限を確認する方法
- 15 よくある権限エラーと対処
- 16 MariaDBでリモート接続を許可する方法(外部から接続できない場合の対処)
- 17 外部から接続できない場合のチェックリスト
- 18 セキュリティ上の重要注意
- 19 MariaDBが起動しない場合の対処(failedエラー)
- 20 Access denied エラーの原因まとめ
- 21 最低限のパフォーマンス改善(初心者向け)
- 22 よくある質問(FAQ)
- 23 まとめ:UbuntuでMariaDBを安全に使うために
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 mariadbactive (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 mariadb2. ポート3306が待ち受けているか
sudo ss -tulnp | grep 33060.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 -hAccess 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.cnf で port = 3307 のように変更し、再起動します。
まとめ:UbuntuでMariaDBを安全に使うために
- 標準リポジトリ版を使用するのが最も安全
- mysql_secure_installationは必ず実行
- rootでのアプリ接続は禁止
- リモート接続は必要な場合のみ有効化
- トラブル時はログ確認が最優先
ここまでの手順で、Ubuntu上に安全かつ実用的なMariaDB環境を構築できます。


