UbuntuでMariaDBをインストールし設定する完全ガイド|初心者向け詳細解説

目次

1. はじめに

MariaDBは、オープンソースのリレーショナルデータベース管理システム(RDBMS)であり、MySQLのフォーク(派生)として誕生しました。近年、データベースを活用するプロジェクトにおいてMariaDBは広く採用されており、その性能と信頼性から多くの企業や開発者に支持されています。

MariaDBの特徴と利点

MariaDBの最大の特徴は、MySQLとの高い互換性を保ちながらも、独自の進化を遂げている点です。以下にMariaDBの主な利点を挙げます。

  • オープンソースライセンス: MariaDBはGPL(GNU General Public License)のもとで開発されており、無料で利用可能です。
  • 高い互換性: MySQLで使用していたデータやアプリケーションをMariaDBに移行する際、大幅な修正を加える必要がありません。
  • 強化されたセキュリティ: MariaDBはデフォルトでセキュリティ設定が強化されており、安全性が高い環境を構築できます。
  • スケーラビリティ: 大規模データや高負荷のシステムに対応するための最適化が施されています。

UbuntuでMariaDBを使用するメリット

Ubuntuは、多くのサーバー環境で利用されているLinuxディストリビューションです。MariaDBをUbuntuで使用することで、以下のようなメリットが得られます。

  1. 安定性: UbuntuのLTS(長期サポート)バージョンは、安定性と長期的なセキュリティアップデートが保証されています。
  2. パッケージ管理の容易さ: aptコマンドを使用することで、MariaDBのインストールや更新がシンプルに行えます。
  3. 幅広いサポート: UbuntuとMariaDBの組み合わせは多くの開発者に利用されているため、オンラインのドキュメントやフォーラムで問題解決の情報を見つけやすいです。

記事のゴール

本記事では、MariaDBをUbuntu環境にインストールし、基本的な設定や操作方法、トラブルシューティングについて詳しく解説します。初心者から中級者まで、あらゆるレベルの読者がこのガイドを通じてMariaDBを効果的に活用できるようになることを目指しています。

2. 必要な準備

MariaDBをUbuntuにインストールする前に、必要な準備を整えておくことで、スムーズに作業を進めることができます。このセクションでは、推奨環境や依存パッケージの確認、リポジトリの更新方法について詳しく説明します。

推奨環境

MariaDBを効率的に動作させるためには、以下の環境を推奨します。

  • Ubuntuのバージョン:
  • サポートされるLTSバージョン(20.04, 22.04など)を使用することをおすすめします。
  • ハードウェア要件:
  • メモリ: 最低512MB(推奨2GB以上)
  • ディスク容量: 500MB以上の空き容量(データ量に応じてさらに必要)
  • CPU: 1GHz以上のプロセッサ(複数コアを推奨)

これらの要件を満たすことで、安定してMariaDBを運用できます。

依存パッケージとシステム要件

MariaDBのインストールには、いくつかの依存パッケージが必要です。以下のコマンドを実行して、依存関係を事前に確認し、必要なパッケージをインストールしてください。

sudo apt update
sudo apt install -y software-properties-common gnupg

これにより、リポジトリの追加やGPGキーの管理が可能になります。また、curlwgetを使用する場合は、それらもインストールしておくと便利です。

sudo apt install -y curl wget

リポジトリの更新

最新のパッケージ情報を取得するために、まずシステムのリポジトリを更新します。以下のコマンドを実行してください。

sudo apt update
sudo apt upgrade -y
  • apt update: 現在のリポジトリから最新のパッケージリストを取得します。
  • apt upgrade: システムにインストールされているパッケージを最新バージョンにアップデートします。

SSH接続の確認(リモートサーバーの場合)

リモートサーバーにMariaDBをインストールする場合、事前にSSH接続が安定していることを確認してください。以下のように接続を確認できます。

ssh ユーザー名@サーバーのIPアドレス

リモート環境での設定ミスを防ぐため、インストール作業中は接続が切れないように注意してください。

3. MariaDBのインストール

UbuntuにMariaDBをインストールするには、標準リポジトリまたは公式リポジトリを使用する方法があります。ここでは、それぞれの手順を詳しく説明します。

標準リポジトリからのインストール

Ubuntuの標準リポジトリに含まれているMariaDBは、安定性を重視したバージョンです。以下の手順でインストールを行います。

手順

  1. リポジトリを更新します。
   sudo apt update
  1. MariaDBをインストールします。
   sudo apt install -y mariadb-server mariadb-client
  1. インストール完了後、MariaDBサービスの状態を確認します。
   sudo systemctl status mariadb
  1. MariaDBサービスが自動的に起動しない場合は、以下のコマンドで手動で起動します。
   sudo systemctl start mariadb
  1. サービスを自動起動する設定にします。
   sudo systemctl enable mariadb

メリット

  • 標準リポジトリを使用するため、Ubuntuの公式サポートを受けやすい。
  • シンプルな手順でインストール可能。

公式リポジトリを使用したインストール

最新バージョンのMariaDBをインストールしたい場合は、公式リポジトリを使用します。この方法では、より新しい機能や性能改善を利用できます。

手順

  1. MariaDBの公式リポジトリを追加します。
   sudo apt install -y software-properties-common
   sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.aarnet.edu.au/pub/mariadb/repo/10.6/ubuntu focal main'
  1. リポジトリのGPGキーを追加します。
   sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
  1. パッケージリストを更新します。
   sudo apt update
  1. MariaDBをインストールします。
   sudo apt install -y mariadb-server mariadb-client
  1. サービスの状態を確認し、起動します。
   sudo systemctl status mariadb
   sudo systemctl start mariadb
   sudo systemctl enable mariadb

注意点

  • 公式リポジトリを使用する場合、Ubuntuの標準リポジトリと競合する可能性があるため、インストール中にエラーが発生した場合は、競合パッケージを削除してください。

インストール後の確認

MariaDBのインストールが完了したら、以下のコマンドで動作確認を行います。

バージョン確認

mysql --version

MariaDBに接続

sudo mysql

正常にMariaDBのコンソールに接続できれば、インストールは成功です。

4. 初期設定とセキュリティ強化

MariaDBをインストールした後は、セキュリティを強化し、基本的な設定を行う必要があります。このセクションでは、初期設定と推奨されるセキュリティ強化手順を詳しく説明します。

mysql_secure_installationの実行

MariaDBのインストール直後は、デフォルト設定のままではセキュリティリスクが高い状態です。以下のコマンドを実行して、簡単なセキュリティ設定を行いましょう。

コマンドの実行

sudo mysql_secure_installation

各プロンプトの解説

  1. 現在のrootパスワードの入力
  • 初回の場合は未設定のため、Enterキーを押します。
  1. rootパスワードの設定
  • 強力なパスワードを設定します。例: 長さ12文字以上で、英数字や記号を組み合わせる。
  1. 匿名ユーザーの削除
  • 推奨: Y(匿名ユーザーを削除します)
  1. リモート接続の無効化
  • 推奨: Y(rootユーザーによるリモートログインを無効化)
  1. テストデータベースの削除
  • 推奨: Y(不要なデフォルトデータベースを削除します)
  1. 権限テーブルのリロード
  • 推奨: Y(設定変更を即時反映)

これで基本的なセキュリティ設定が完了します。

認証プラグインの設定

MariaDBでは、デフォルトでunix_socketプラグインを使用してrootユーザーの認証を行います。この設定は便利ですが、他のツールやスクリプトから接続する場合に問題となることがあります。必要に応じて認証方式を切り替えましょう。

現在の認証方式を確認

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

認証方式の変更(例: mysql_native_passwordへ変更)

  1. MariaDBコンソールに接続します。
   sudo mysql
  1. プラグインを変更します。
   ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '新しいパスワード';
   FLUSH PRIVILEGES;
  1. 変更を確認します。
   SELECT user, host, plugin FROM mysql.user;

文字コード設定

データベースの文字コードを適切に設定することで、文字化けやデータ不整合を防ぐことができます。一般的にはutf8mb4を使用することが推奨されます。

設定方法

  1. 設定ファイルを編集します。
   sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
  1. 以下の行を追加または編集します。
   [mysqld]
   character-set-server=utf8mb4
   collation-server=utf8mb4_general_ci
  1. MariaDBを再起動します。
   sudo systemctl restart mariadb
  1. 設定を確認します。
   SHOW VARIABLES LIKE 'character_set%';

パスワードポリシーの設定

強固なセキュリティを保つため、パスワードポリシーを設定することをおすすめします。

設定手順

  1. validate_passwordプラグインを有効化します。
   sudo mysql -e "INSTALL PLUGIN validate_password SONAME 'validate_password.so';"
  1. パスワードポリシーを確認または変更します。
   SHOW VARIABLES LIKE 'validate_password%';
   SET GLOBAL validate_password.length = 12;
   SET GLOBAL validate_password.mixed_case_count = 1;
   SET GLOBAL validate_password.number_count = 1;
   SET GLOBAL validate_password.special_char_count = 1;

5. 基本操作

MariaDBをインストールし、初期設定とセキュリティを強化した後は、基本的な操作方法を学びましょう。このセクションでは、MariaDBサービスの管理やデータベースの作成、ユーザーの設定、バックアップと復元について解説します。

MariaDBサービスの管理

MariaDBサービスを操作する基本的なコマンドを以下に示します。

サービスの起動

MariaDBサービスを開始するには、以下のコマンドを実行します。

sudo systemctl start mariadb

サービスの停止

サービスを停止する場合は、次のコマンドを使用します。

sudo systemctl stop mariadb

サービスの再起動

設定を変更した後にMariaDBを再起動する必要がある場合は、以下を実行します。

sudo systemctl restart mariadb

サービスの状態確認

MariaDBが正常に動作しているか確認するには、次のコマンドを実行します。

sudo systemctl status mariadb

データベースの作成

データベースを作成するには、MariaDBのコンソールに接続します。

コンソールへの接続

以下のコマンドでMariaDBに接続します。

sudo mysql

データベースの作成

CREATE DATABASEコマンドを使用して、新しいデータベースを作成します。

CREATE DATABASE sample_db;

作成したデータベースの確認

以下のコマンドで、データベースの一覧を確認できます。

SHOW DATABASES;

ユーザーの作成と権限の設定

MariaDBでは、新しいユーザーを作成し、特定のデータベースに対して権限を付与できます。

ユーザーの作成

次のコマンドで新しいユーザーを作成します。

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';

権限の付与

作成したユーザーに特定のデータベースへのすべての権限を付与します。

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

権限を付与した後は、権限をリロードする必要があります。

FLUSH PRIVILEGES;

ユーザーと権限の確認

現在のユーザーと権限を確認するには、次のコマンドを使用します。

SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'new_user'@'localhost';

バックアップと復元

MariaDBでは、データを保護するために定期的なバックアップを行うことが重要です。

バックアップの作成

mysqldumpコマンドを使用してデータベースをバックアップします。

mysqldump -u root -p sample_db > sample_db_backup.sql

バックアップの復元

バックアップファイルを使用してデータベースを復元します。

mysql -u root -p sample_db < sample_db_backup.sql

6. トラブルシューティング

MariaDBを使用していると、インストールや設定、操作中にエラーや問題が発生することがあります。このセクションでは、よくあるトラブルとその解決策について解説します。

MariaDBが起動しない場合

症状

MariaDBを起動しようとすると、エラーが発生してサービスが開始できない。

解決策

  1. サービスの状態を確認
   sudo systemctl status mariadb

ステータスが「failed」と表示される場合、エラーメッセージを確認します。

  1. エラーログの確認
    MariaDBのエラーログは、以下の場所に保存されています。
   sudo cat /var/log/mysql/error.log

ログを確認して、具体的なエラー内容を特定します。

  1. ディスク容量の確認
    MariaDBはログファイルやデータの保存にディスクを使用します。空き容量が不足しているとサービスが起動しないことがあります。
   df -h

必要に応じて不要なファイルを削除し、空き容量を確保してください。

  1. 設定ファイルの修正
    設定に誤りがある場合は、MariaDBの設定ファイル(/etc/mysql/mariadb.conf.d/50-server.cnf)を確認してください。
  2. サービスの再起動
    問題を修正した後、MariaDBを再起動します。
   sudo systemctl restart mariadb

権限エラーが発生する場合

症状

特定のユーザーがデータベースにアクセスしようとすると、「Access denied for user」というエラーが表示される。

解決策

  1. ユーザー権限の確認
    MariaDBに接続し、ユーザー権限を確認します。
   SHOW GRANTS FOR 'ユーザー名'@'ホスト名';
  1. 適切な権限の付与
    必要な権限を付与します。
   GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'@'ホスト名';
   FLUSH PRIVILEGES;
  1. ホスト名の設定確認
    ユーザーが接続しているホスト(例: localhost または %)が正しいか確認してください。

データベース接続エラー

症状

クライアントアプリケーションからMariaDBに接続できない。

解決策

  1. MariaDBがリモート接続を許可しているか確認
    デフォルトでは、MariaDBはローカルホストのみ接続を許可しています。リモート接続を許可するには、bind-addressを修正します。
   sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

以下の行を確認または修正します。

   bind-address = 0.0.0.0
  1. ファイアウォールの設定
    MariaDBが使用するポート(デフォルト: 3306)が開いていることを確認します。
   sudo ufw allow 3306
   sudo ufw reload
  1. リモート接続用のユーザー設定
    リモートホストからの接続を許可するユーザーを作成または設定します。
   CREATE USER 'ユーザー名'@'%' IDENTIFIED BY 'パスワード';
   GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'@'%';
   FLUSH PRIVILEGES;

パフォーマンスの問題

症状

MariaDBのクエリが遅い、またはサーバーが高負荷になる。

解決策

  1. クエリの最適化
  • 遅いクエリを特定するために、スロークエリログを有効化します。
    ini slow_query_log = 1 long_query_time = 2
  • ログの確認:
    bash sudo cat /var/log/mysql/slow.log
  1. インデックスの追加
  • 頻繁に使用されるクエリに適切なインデックスを追加することで、検索速度を向上させます。
    sql CREATE INDEX idx_column ON テーブル名(カラム名);
  1. キャッシュの利用
    MariaDBの設定ファイルでクエリキャッシュを有効化します。
   query_cache_size = 16M
   query_cache_type = 1
  1. サーバーリソースの監視
    tophtopコマンドを使用して、CPUやメモリ使用率を確認し、必要に応じてサーバーリソースを増強します。

7. FAQ(よくある質問)

ここでは、MariaDBをUbuntuで使用する際によくある質問とその回答をまとめました。これらのQ&Aは初心者から中級者のユーザーに役立つ情報を提供します。

Q1: MariaDBとMySQLの違いは何ですか?

MariaDBはMySQLから派生したオープンソースのリレーショナルデータベース管理システム(RDBMS)です。以下は主な違いです:

  • ライセンス: MariaDBはGPL(GNU General Public License)を採用しており、MySQLよりもオープンソースの理念を徹底しています。
  • 機能: MariaDBはMySQLよりも新機能の導入が早く、クエリの最適化やプラグインが強化されています。
  • 開発体制: MySQLはOracleが主導する一方、MariaDBは独立したコミュニティで開発が進められています。

Q2: MariaDBの特定のバージョンをインストールするにはどうすればよいですか?

MariaDBの公式リポジトリを使用することで、特定のバージョンをインストールできます。以下は手順の例です(バージョン10.6をインストールする場合):

  1. MariaDB公式リポジトリを追加:
   sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.aarnet.edu.au/pub/mariadb/repo/10.6/ubuntu focal main'
  1. パッケージリストを更新し、インストール:
   sudo apt update
   sudo apt install -y mariadb-server

Q3: mysql_secure_installationの設定内容がよくわかりません。

mysql_secure_installationはMariaDBのセキュリティ設定を簡単に行うためのスクリプトです。以下に主な設定内容を説明します:

  • rootパスワードの設定: デフォルトでは設定されていないため、必ず強力なパスワードを設定します。
  • 匿名ユーザーの削除: セキュリティを向上させるため、匿名ユーザーは削除することを推奨します。
  • テストデータベースの削除: MariaDBに含まれるテスト用のデータベースを削除します。
  • 権限テーブルのリロード: 設定変更をすぐに反映させます。

Q4: 文字コードをutf8mb4に設定する理由は何ですか?

utf8mb4は、UTF-8の完全な実装であり、絵文字や特殊文字を含むすべての文字をサポートします。これを設定することで、文字化けやデータ損失のリスクを防ぐことができます。

設定例:

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

Q5: MariaDBのパフォーマンスを改善するにはどうすれば良いですか?

MariaDBのパフォーマンスを向上させるには以下を検討してください:

  • クエリの最適化: スロークエリログを有効にして、パフォーマンスの悪いクエリを特定します。
  • インデックスの活用: 頻繁に使用する列にインデックスを作成します。
  • キャッシュ設定: MariaDBの設定ファイルでクエリキャッシュを適切に設定して再利用可能な結果を保存します。
  • リソースの監視: CPUやメモリの使用状況を監視し、サーバーの負荷を軽減します。

Q6: MariaDBのバックアップを自動化する方法はありますか?

はい、cronを使用してバックアップを自動化できます。以下は毎日午前3時にバックアップを実行する例です:

  1. バックアップスクリプトを作成:
   nano /usr/local/bin/backup_mariadb.sh

内容:

   #!/bin/bash
   mysqldump -u root -p'password' --all-databases > /backup/mariadb_backup_$(date +\%F).sql
  1. スクリプトに実行権限を付与:
   chmod +x /usr/local/bin/backup_mariadb.sh
  1. Cronジョブを設定:
   crontab -e

以下を追加:

   0 3 * * * /usr/local/bin/backup_mariadb.sh

8. まとめと次のステップ

この記事では、UbuntuでMariaDBをインストールし、安全かつ効率的に運用するための手順を詳しく解説しました。以下に、各セクションで学んだ内容を簡単に振り返ります。

記事のポイントまとめ

  1. はじめに
  • MariaDBの特徴やUbuntuで使用するメリットを解説しました。
  1. 必要な準備
  • インストール前の推奨環境、依存パッケージ、リポジトリの更新手順を確認しました。
  1. MariaDBのインストール
  • 標準リポジトリと公式リポジトリを使用したインストール方法を学びました。
  1. 初期設定とセキュリティ強化
  • mysql_secure_installationを使用したセキュリティ設定、認証プラグインの設定、文字コードの変更方法を解説しました。
  1. 基本操作
  • サービスの管理、データベースの作成、ユーザーと権限の設定、バックアップと復元について学びました。
  1. トラブルシューティング
  • 起動エラー、権限エラー、接続エラー、パフォーマンス問題の解決策を確認しました。
  1. FAQ(よくある質問)
  • MariaDBの基本的な知識や便利な設定方法、バックアップの自動化について詳しく解説しました。

次のステップ

MariaDBを基本的に操作できるようになったら、さらに高度な機能や設定を学ぶことで、より効率的で堅牢なデータベース環境を構築できます。

レプリケーションを学ぶ

MariaDBのレプリケーションを利用することで、データの冗長性を確保し、可用性を向上させることができます。主従レプリケーション(Master-Slave)や複数マスター(Master-Master)の設定方法を学ぶことをおすすめします。

パフォーマンスチューニング

データ量やトラフィックが増加すると、パフォーマンスが課題になることがあります。クエリの最適化、インデックスの活用、サーバー設定の調整などを学び、MariaDBの性能を最大限に引き出しましょう。

セキュリティのさらなる強化

  • SSL/TLSを使用した安全な接続の設定
  • ログ監視やデータ暗号化の導入

MariaDBの高度な機能

  • Galera Clusterを使用した高可用性クラスタリング
  • JSONデータ型や全文検索機能などの最新機能を活用

参考リンク

これからさらに学びを深めるために、以下のリソースを活用してください。