序章

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 20.04サーバーにインストールし、それが実行されており、安全な初期構成になっていることを確認する方法について説明します。

前提条件

このチュートリアルに従うには、Ubuntu20.04を実行しているサーバーが必要です。 このサーバーには、root以外の管理ユーザーとUFWで構成されたファイアウォールが必要です。 Ubuntu20.04の初期サーバーセットアップガイドに従ってこれをセットアップします。

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

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

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

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

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, 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 アカウントを変更する代わりに、パスワードベースのアクセス用に別の管理者アカウントを作成することをお勧めします。

このために、 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.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に接続し、バージョンを返すように指示します。

  1. sudo mysqladmin version

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

Output
mysqladmin 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

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

  1. mysqladmin -u admin -p version

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

結論

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

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