序章

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

このチュートリアルでは、MariaDBをUbuntu 18.04サーバーにインストールする方法を説明し、MariaDBが実行されており、安全な初期構成になっていることを確認します。

前提条件

このチュートリアルに従うには、次のものが必要です。

このページに埋め込まれているインタラクティブ端末を使用して、このチュートリアルでMariaDBのインストールと構成を試すこともできます。 次のLaunch an Interactive Terminal!ボタンをクリックして開始します。

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

Ubuntu 18.04では、MariaDBバージョン10.1がデフォルトでAPTパッケージリポジトリに含まれています。

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

  1. sudo apt update

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

  1. sudo apt install mariadb-server

MariaDBがsystemctl startコマンドで実行されていることを確認します。

  1. sudo systemctl start mariadb.service

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

ステップ2—MariaDBの構成

新しいMariaDBインストールの場合、次のステップは、含まれているセキュリティスクリプトを実行することです。 このスクリプトは、安全性の低いデフォルトオプションの一部を変更します。 これを使用して、リモート root ログインをブロックし、未使用のデータベースユーザーを削除します。

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

  1. sudo mysql_secure_installation

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

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

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

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

MariaDB 10.1を実行しているUbuntuシステムでは、 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

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

ステップ4—MariaDBのテスト

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

  1. sudo systemctl status mariadb

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

Output
● mariadb.service - MariaDB 10.1.44 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-03-25 16:51:16 UTC; 8min ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 22559 (mysqld) Status: "Taking your SQL requests now..." Tasks: 27 (limit: 1152) CGroup: /system.slice/mariadb.service └─22559 /usr/sbin/mysqld Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22596]: mysql Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22596]: performance_schema Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22596]: Phase 6/7: Checking and upgrading tables Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22596]: Processing databases Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22596]: information_schema Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22596]: performance_schema Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22596]: Phase 7/7: Running 'FLUSH PRIVILEGES' Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22596]: OK Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22658]: Checking for insecure root accounts. Mar 25 16:51:17 ubuntu-mariadb /etc/mysql/debian-start[22663]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables

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

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

  1. sudo mysqladmin version

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

Output
mysqladmin Ver 9.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.1.44-MariaDB-0ubuntu0.18.04.1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 10 min 9 sec Threads: 1 Questions: 445 Slow queries: 0 Opens: 167 Flush tables: 1 Open tables: 30 Queries per second avg: 0.730

パスワード認証を使用して別の管理ユーザーを構成した場合は、次のように入力して同じ操作を実行できます。

  1. mysqladmin -u admin -p version

これは、MariaDBが稼働中であり、ユーザーが正常に認証できることを意味します。

結論

このガイドでは、SQLサーバーとして機能するようにMariaDBをインストールしました。 インストールプロセス中に、サーバーも保護しました。 オプションで、別のパスワード認証された管理ユーザーも作成しました。

実行中の安全なMariaDBサーバーができたので、サーバーを操作するために実行できる次の手順の例を次に示します。

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