Ubuntu 22.04にMariaDBをインストールする方法

紹介

MariaDBはオープンソースのリレーショナルデータベース管理システムであり、一般的には人気のあるLAMP(Linux、Apache、MySQL、PHP/Python/Perl)スタックのデータベース部分としてMySQLの代替として使用されます。これはMySQLの代替として利用されることを意図しています。

このインストールガイドの簡単なバージョンは、次の3つの手順で構成されています:

  • パッケージインデックスをaptを使用して更新します。
  • aptを使用してmariadb-serverパッケージをインストールします。 このパッケージには、MariaDBと対話するための関連ツールも含まれています。
  • 含まれているmysql_secure_installationセキュリティスクリプトを実行して、サーバへのアクセスを制限します。
  1. sudo apt update
  2. sudo apt install mariadb-server
  3. sudo mysql_secure_installation

このチュートリアルでは、Ubuntu 22.04サーバにMariaDBをインストールし、実行中で安全な初期設定であることを確認する方法について説明します。

前提条件

  • このチュートリアルに従うには、Ubuntu 22.04 を実行しているサーバーが必要です。このサーバーには、非ルートの管理ユーザーと、UFW で構成されたファイアウォールが設定されている必要があります。これを設定するには、Ubuntu 22.04 の初期サーバーセットアップガイドに従ってください。

ステップ 1 — MariaDB のインストール

この記事を執筆時点では、Ubuntu 22.04 のデフォルトの APT リポジトリには MariaDB バージョン 10.5.12 が含まれています。

これをインストールするには、サーバー上のパッケージインデックスを apt で更新します:

  1. sudo apt update

次に、パッケージをインストールします:

  1. sudo apt install mariadb-server

これらのコマンドで MariaDB がインストールされますが、パスワードの設定やその他の構成変更を促すことはありません。デフォルトの構成では MariaDB のインストールが安全でないため、mariadb-server パッケージが提供するスクリプトを使用して、サーバーへのアクセスを制限し、未使用のアカウントを削除します。

ステップ 2 — MariaDB の構成

新しい MariaDB インストールの場合、次のステップは含まれているセキュリティスクリプトを実行することです。このスクリプトは、リモートrootログインやサンプルユーザーなどのセキュリティの低いデフォルトオプションを変更します。

セキュリティースクリプトを実行してください:

  1. sudo mysql_secure_installation

これにより、一連のプロンプトが表示され、MariaDBインストールのセキュリティオプションを変更できます。最初のプロンプトでは、現在のデータベースrootパスワードを入力するように求められます。まだ設定していない場合は、「なし」として「ENTER」を押します。

Output
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, you'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none):

次に、Unixソケット認証に切り替えるかどうかを尋ねられます。すでに保護されたrootアカウントがあるため、この手順をスキップできます。 「n」と入力してから、「ENTER」を押します。

Output
. . . Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n

次のプロンプトでは、データベースrootパスワードを設定するかどうかを尋ねられます。Ubuntuでは、MariaDBのrootアカウントは、自動システムメンテナンスに密接に関連しているため、そのアカウントの構成された認証方法を変更しないでください。

そうすると、パッケージの更新によって管理アカウントへのアクセスが削除されることで、データベースシステムが破損する可能性があります。 「n」と入力してから、「ENTER」を押します。

Output
. . . OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] n

後で、ソケット認証が使用ケースに適さない場合の追加の管理アカウントのパスワードアクセスの設定方法について説明します。

そこから、すべての後続の質問のデフォルトを受け入れるために、「Y」と入力してから「ENTER」を押します。これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートrootログインが無効になり、新しいルールが読み込まれ、MariaDBがすぐに行った変更を実装します。

それにより、MariaDBの初期セキュリティ設定が完了しました。次のステップはオプションですが、MariaDBサーバーにパスワードで認証したい場合はこのステップに従うことをお勧めします。

ステップ3 — (オプション) パスワード認証を使用する管理ユーザーの作成

UbuntuシステムでMariaDB 10.5を実行している場合、root MariaDBユーザーはデフォルトでパスワードではなくunix_socketプラグインを使用して認証されるように設定されています。これにより、多くの場合、セキュリティと使いやすさが向上しますが、外部プログラム(例: phpMyAdmin)に管理権限を付与する必要がある場合には複雑になることもあります。

サーバーは、ログの回転やサーバーの起動と停止などのタスクにrootアカウントを使用するため、rootアカウントの認証詳細を変更しないことが最善です。 /etc/mysql/debian.cnf構成ファイルで資格情報を変更することは最初は機能するかもしれませんが、パッケージの更新でこれらの変更が上書きされる可能性があります。パッケージメンテナーは、rootアカウントを変更する代わりに、パスワードベースのアクセス用に別の管理アカウントを作成することをお勧めしています。

このために、adminという新しいアカウントを作成します。このアカウントはrootアカウントと同じ機能を持ちますが、パスワード認証が構成されています。ターミナルからMariaDBプロンプトを開きます:

  1. sudo mariadb

次に、root権限とパスワード認証を持つ新しいユーザを作成します。ユーザ名とパスワードを好みに合わせて変更してください:

  1. GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

セッション内で保存され、利用可能であることを確認するために、権限をフラッシュします:

  1. FLUSH PRIVILEGES;

その後、MariaDBシェルから終了します:

  1. exit

最後に、MariaDBのインストールをテストします。

ステップ4 — MariaDBのテスト

デフォルトのリポジトリからインストールすると、MariaDBは自動的に実行されます。これをテストするには、その状態を確認します。

  1. sudo systemctl status mariadb

以下のような出力が表示されます:

Output
● mariadb.service - MariaDB 10.5.12 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-03-11 22:01:33 UTC; 14min ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ . . .

MariaDBが実行されていない場合は、sudo systemctl start mariadbコマンドで開始できます。

さらに確認するために、管理コマンドを実行するクライアントであるmysqladminツールを使用してデータベースに接続できます。たとえば、このコマンドはUnixソケットを使用してMariaDBにrootとして接続し、バージョンを返します:

  1. sudo mysqladmin version

同様の出力が表示されます。

Output
mysqladmin Ver 9.1 Distrib 10.5.12-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.5.12-MariaDB-1build1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /run/mysqld/mysqld.sock Uptime: 15 min 53 sec Threads: 1 Questions: 482 Slow queries: 0 Opens: 171 Open tables: 28 Queries per second avg: 0.505

結論

このガイドでは、MariaDB関係データベース管理システムをインストールし、mysql_secure_installationスクリプトを使用してセキュリティを確保しました。また、MariaDBサーバーの機能をテストする前に、パスワード認証を使用する新しい管理ユーザーを作成するオプションもありました。

実行中でセキュリティの確保されたMariaDBサーバーがある今、次の手順の例をいくつか示します:

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-mariadb-on-ubuntu-22-04