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

はじめに

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

このインストールガイドの簡素版は、次の3つのステップで構成されています。

  • aptを使用したパッケージインデックスを更新
  • aptを使用してmariadb-serverパッケージをインストールするパッケージも関連ツールで制御し、MariaDBと情報を交換する
  • 含まれたmysql_secure_installationセキュリティスクリプトを実行して、サーバーへのアクセスを制限する
  • sudo apt update
  • sudo apt install mariadb-server
  • sudo mysql_secure_installation

このチュートリアルでは、Ubuntu 20.04サーバーにMariaDBをインストールして、それが作動し安全に初期設定されていることを確認する方法を説明します。

前提条件

このチュートリアルに従うには、Ubuntu 20.04を実行しているサーバーが必要です。このサーバーにはroot以外の管理権限が付与されたユーザーと、ufwで設定されたファイアウォールが必要です。Ubuntu 20.04の初期サーバーセットアップガイドに従ってこれをセットアップします。

ステップ1— MariaDBをインストールする

本書の執筆時点で、Ubuntu 20.04のデフォルトのAPTリポジトリには、MariaDBバージョン10.3が含まれます。

インストールするには、aptを使用してサーバーのパッケージインデックスを更新します。

  • sudo apt update

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

  • sudo apt install mariadb-server

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

ステップ2 — MariaDBを設定する

新しいMariaDBインストールでは、次のステップが含有されたセキュリティスクリプトを実行します。これにより、リモートrootログインやサンプルユーザーなどの安全性の低いデフォルトオプションの一部が変更されます。

セキュリティスクリプトを実行します。

  • sudo mysql_secure_installation

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

OutputNOTE: 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, we'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): 

次のプロンプトでは、データベース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 —(オプション)パスワード認証を採用する管理ユーザーを作成する

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

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

この目的で、 rootアカウントと同じ機能を持つadminと呼ばれる新しいアカウントを作成しますが、パスワード認証用に設定されます。端末からMariaDBプロンプトを開きます。

  • sudo mariadb

次に、root権限とパスワードベースのアクセスを持つ新しいユーザーを作成します。ユーザー名とパスワードを好みに合うように変更してください。

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

現在のセッションで保存されており利用できることを確認するために、権限をフラッシュします。

  • FLUSH PRIVILEGES;

この後、MariaDBシェルを終了します。

  • exit

最後に、MariaDBインストールをテストしてみましょう。

ステップ4 — MariaDBをテストする

デフォルトリポジトリからインストールされた場合、MariaDBは自動的に実行を開始します。これをテストするには、ステータスを確認してください。

  • sudo systemctl status mariadb

次のような出力が表示されます。

Output● mariadb.service - MariaDB 10.3.22 database server      Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)      Active: active (running) since Tue 2020-05-12 13:38:18 UTC; 3min 55s ago        Docs: man:mysqld(8)              https://mariadb.com/kb/en/library/systemd/    Main PID: 25914 (mysqld)      Status: "Taking your SQL requests now..."       Tasks: 31 (limit: 2345)      Memory: 65.6M      CGroup: /system.slice/mariadb.service              └─25914 /usr/sbin/mysqld . . . 

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

追加のチェックとして、管理コマンドを実行できるクライアントである mysqladmin ツールを使用してデータベースへの接続を試すことができます。 例えば、このコマンドは、Unixソケットを使用してrootとしてMariaDBに接続し、バージョンを返します。

  • sudo mysqladmin version

次のような出力が表示されます。

Outputmysqladmin  Ver 9.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.  Server version      10.3.22-MariaDB-1ubuntu1 Protocol version    10 Connection      Localhost via UNIX socket UNIX socket     /var/run/mysqld/mysqld.sock Uptime:         4 min 49 sec  Threads: 7  Questions: 467  Slow queries: 0  Opens: 177  Flush tables: 1  Open tables: 31  Queries per second avg: 1.615 

パスワード認証で別の管理ユーザーを設定した場合は、次のように入力することで同じ操作を実行できます。

  • mysqladmin -u admin -p version

つまり、MariaDBが立ち上がって実行され、ユーザーが正常に認証できるようになっているということです。

まとめ

本ガイドでは、MariaDBリレーショナルデータベース管理システムをインストールし、インストールされたmysql_secure_installationスクリプトを使用して保護する方法を示しました。また、MariaDBサーバーの機能をテスト前に、パスワード認証を使用する新しい管理ユーザーを作成するオプションも学びました。

安全に作動するMariaDBサーバーが確認されたので、サーバーで作業できる次のステップの例をいくつか以下に挙げます。

  • データベースをインポート/エクスポートする方法の学習
  • SQLクエリーを実行する練習
  • MariaDBをより大きなアプリケーションスタックに組み込む