ウェブサイト検索

Debian 10にMariaDBをインストールする方法


Debian 10を使用していませんか?別のバージョンやディストリビューションを選択してください。

紹介

MariaDBはオープンソースのデータベース管理システム(DBMS)で、人気のLAMP(Linux、Apache、MySQL、PHP/Python/Perl)スタックのMySQL部分の代替として一般的に使用されます。それはMySQLの代替として使用されることを意図しており、Debianは現在MariaDBパッケージのみを提供しています。 MySQLサーバー関連のパッケージをインストールしようとすると、互換性のあるMariaDBの代替バージョンが代わりに提供されます。

このインストールガイドの短いバージョンは、以下の3つのステップで構成されています。

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

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

前提条件

このチュートリアルを完了するには、rootユーザーではないユーザーがsudo権限を持ち、ファイアウォールが設定されたDebian 10サーバーが1台必要です。この設定は、初期サーバーセットアップガイドに従って行うことができます。

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

Debian 10では、MariaDBバージョン10.3がデフォルトでAPTパッケージリポジトリに含まれています。これは、DebianのMySQL/MariaDBパッケージチームによってデフォルトのMySQLバリアントとしてマークされています。

インストールするには、サーバー上のパッケージインデックスを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を押して「なし」を示してください。

次のプロンプトでは、データベースのrootパスワードを設定するかどうか尋ねられます。Nと入力してからENTERキーを押してください。Debianでは、MariaDBのrootアカウントは自動システムメンテナンスに密接に関連しているため、そのアカウントの認証方法を変更しないでください。そうすると、パッケージの更新によって管理アカウントへのアクセスが削除され、データベースシステムが壊れる可能性があります。この後、ソケット認証がご利用のケースに適していない場合のために、パスワードアクセス用の追加管理アカウントをオプションで設定する方法について説明します。

そこから、Yを押してからENTERを押すことで、その後のすべての質問に対して既定値を受け入れることができます。これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートのrootログインが無効になり、これらの新しいルールが読み込まれるため、MariaDBはすぐにあなたが行った変更を尊重します。

ステップ3 — (オプション)ユーザー認証と権限の調整

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

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

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

  1. sudo mysql

新しいユーザーをroot権限とパスワードベースのアクセスで作成します。ユーザー名とパスワードをお好みに合わせて変更してください:

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

特権をフラッシュして、現在のセッションに保存され利用可能であることを確認します:

  1. FLUSH PRIVILEGES;

これに続いて、MariaDBシェルを終了します。

  1. exit
Bye

次に、MariaDBのインストールをテストしましょう。

ステップ4 — MariaDBのテスト

デフォルトのリポジトリからインストールされた場合、MariaDBは自動的に起動するはずです。これをテストするために、そのステータスを確認してください:

  1. sudo systemctl status mariadb

以下のような出力を受け取ることになります:

● mariadb.service - MariaDB 10.3.31 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset:
   Active: active (running) since Mon 2022-03-14 18:33:32 UTC; 2min 2s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 3229 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 31 (limit: 4915)
   Memory: 74.4M
   CGroup: /system.slice/mariadb.service
           └─3229 /usr/sbin/mysqld

Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: performance_schema
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Phase 6/7: Checking and u
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Running 'mysqlcheck' with
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: # Connecting to localhost
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: # Disconnecting from loca
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Processing databases
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: information_schema
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: performance_schema
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Phase 7/7: Running 'FLUSH
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: OK

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

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

  1. sudo mysqladmin version

あなたの出力は以下のようなものであるべきです。

mysqladmin  Ver 9.1 Distrib 10.3.31-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.3.31-MariaDB-0+deb10u1
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 3 min 6 sec

Threads: 6  Questions: 473  Slow queries: 0  Opens: 175  Flush tables: 1  Open tables: 31  Queries per second avg: 2.543

別の管理ユーザーをパスワード認証で設定している場合、次のコマンドを実行することで同じ操作を行うことができます:

  1. mysqladmin -u admin -p version
Ver 9.1 Distrib 10.3.31-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.3.31-MariaDB-0+deb10u1
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 7 min 11 sec

Threads: 6  Questions: 474  Slow queries: 0  Opens: 175  Flush tables: 1  Open tables: 31  Queries per second avg: 1.099

この出力は、MariaDB が正常に動作しており、あなたのユーザーが正常に認証できることを意味します。

結論

このガイドでは、SQLサーバーとして機能するためにMariaDBをインストールしました。インストールプロセス中に、サーバーも保護しました。オプションで、パッケージの更新を通じてMariaDBへの管理アクセスを確保するために、別のユーザーを作成しました。

稼働中で安全なMariaDBサーバーがある今、サーバーと共に作業を進めるための次のステップの例をいくつか挙げます:

  • 輸出入データベース

MariaDBをより大きなアプリケーションスタックに組み込むこともできます:

  • Debian 10にLinux、Nginx、MariaDB、PHP(LEMPスタック)をインストールする方法

関連記事: