Debian 11にMariaDBをインストールする方法
はじめに
MariaDBはオープンソースのリレーショナルデータベース管理システムであり、一般的には人気のあるLAMP(Linux、Apache、MySQL、PHP/Python/Perl)スタックのデータベース部分としてMySQLの代替としてよく使用されています。MySQLの代わりに使用できるように開発されています。
このインストールガイドの簡単版は、次の3つのステップからなります。
- Update your package index using apt
- Install the mariadb-server package using apt. The package also pulls in related tools to interact with MariaDB
- Run the included mysql_secure_installation security script to restrict access to the server
- sudo apt update
- sudo apt install mariadb-server
- sudo mysql_secure_installation
このチュートリアルでは、Debian 11 サーバーに MariaDB をインストールし、実行されており安全な初期設定がされているかを確認する方法を説明します。
前提条件
- To follow this tutorial, you will need a server running Debian 11. This server should have a non-root administrative user and a firewall configured with UFW. Set this up by following our initial server setup guide for Debian 11.
ステップ1- MariaDBのインストール
この執筆時点では、Debian 11のデフォルトのソフトウェアリポジトリには、MariaDBのバージョン10.5.15が含まれています。これは、DebianのMySQL/MariaDBパッケージングチームによってデフォルトのMySQLのバリアントとして指定されています。
インストールするために、aptを使用してサーバー上のパッケージインデックスを更新してください。
- sudo apt update
その後、パッケージをインストールしてください。
- sudo apt install mariadb-server
以下のコマンドは、MariaDBをインストールしますが、パスワードの設定やその他の設定変更のプロンプトは表示されません。デフォルトの設定では、MariaDBのインストールはセキュリティが保たれないため、mariadb-serverパッケージが提供するスクリプトを使用して、サーバーへのアクセスを制限し、未使用のアカウントを削除します。
ステップ2 — MariaDBの設定
新しいMariaDBのインストールでは、次のステップはセキュリティスクリプトを実行することです。このスクリプトは、リモートルートログインやサンプルユーザーなどのより安全ではないデフォルトオプションを変更します。
セキュリティスクリプトを実行してください。
- sudo mysql_secure_installation
これにより、MariaDBのインストールのセキュリティオプションを変更するための一連のプロンプトが表示されます。最初のプロンプトでは、現在のデータベースのルートパスワードを入力するように求められます。まだ設定していないため、「なし」と示すためにENTERキーを押してください。
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ソケット認証に切り替えるかどうか質問されます。既に保護されたルートアカウントを持っているので、このステップはスキップできます。nと入力してENTERを押してください。」
. . . 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
次のプロンプトでは、ルートパスワードを変更するかどうかを尋ねます。Debian 11では、MariaDBのルートアカウントは自動システムメンテナンスに密接に結び付けられているため、そのアカウントの構成された認証方法を変更しないでください。
nを入力し、ENTERを押すことで、パッケージの更新によって管理アカウントへのアクセスが削除され、データベースシステムが破損する可能性があります。
Change the root password? [Y/n]
後で、ソケット認証が適切でない場合に、パスワードアクセス用に追加の管理アカウントの設定方法について説明します。
そこから、Yボタンを押してからENTERキーを押すことで、すべての後続の質問に対してデフォルト値を受け入れることができます。これにより、匿名ユーザーとテストデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールがロードされるため、MariaDBはすぐにあなたが行った変更を実装します。
それによって、お客様はMariaDBの初期セキュリティ設定を完了しました。次のステップは任意でありますが、MariaDBサーバにパスワードで認証する場合は、それに従うことをお勧めします。
ステップ3 -(オプション)パスワード認証を利用する管理ユーザーの作成
デビアンシステムでMariaDB 10.5を実行している場合、ルートのMariaDBユーザーはデフォルトでパスワードではなくunix_socketプラグインを使用して認証されます。これにより、セキュリティと使いやすさが向上する場合もありますが、外部プログラム(例:phpMyAdmin)に管理権限を許可する必要がある場合はやや複雑になることがあります。
サーバーはログのローテーションやサーバーの開始と停止などのタスクにルートアカウントを使用するため、ルートアカウントの認証情報を変更しない方が良いです。/etc/mysql/debian.cnf構成ファイル内の資格情報を変更すると最初は動作するかもしれませんが、パッケージの更新によってそれらの変更が上書きされる可能性があります。ルートアカウントを変更する代わりに、パッケージのメンテナーはパスワードに基づいたアクセスのために別の管理アカウントを作成することを推奨しています。
このため、私たちは管理者という新しいアカウントを作成します。このアカウントは、ルートアカウントと同じ機能を持ちますが、パスワード認証が設定されています。ターミナルからMariaDBのプロンプトを開きます。
- sudo mariadb
次に、ルート特権とパスワードに基づいたアクセス権限を持つ新しいユーザーを作成してください。ユーザー名とパスワードは自分の好みに合わせて変更してください。
- GRANT ALL ON *.* TO ‘admin‘@‘localhost’ IDENTIFIED BY ‘password‘ WITH GRANT OPTION;
現在のセッションで利用可能なように、特権情報をフラッシュして保存する。
- FLUSH PRIVILEGES;
これに続いて、MariaDBシェルを終了してください。
- exit
最後に、MariaDBのインストールをテストしましょう。
ステップ4 — MariaDBのテスト
デフォルトのリポジトリからインストールすると、MariaDBは自動的に実行を開始します。それをテストするために、その状態を確認してください。
- sudo systemctl status mariadb
以下のような出力を受け取ることができます。
● mariadb.service – MariaDB 10.5.15 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として接続し、バージョンを返します。
- sudo mysqladmin version
これに類似した出力が届きます。
mysqladmin Ver 9.1 Distrib 10.5.15-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.5.15-MariaDB-0+deb11u1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /run/mysqld/mysqld.sock Uptime: 4 min 20 sec Threads: 1 Questions: 72 Slow queries: 0 Opens: 32 Open tables: 25 Queries per second avg: 0.276
結論
このガイドでは、MariaDBリレーショナルデータベース管理システムをインストールし、それに付属しているmysql_secure_installationスクリプトを使用してセキュリティを確保しました。MariaDBサーバーの機能をテストする前に、パスワード認証を使用する新しい管理ユーザーを作成するオプションもありました。
MariaDBサーバーが実行され、安全になったことを考えると、次にサーバーで作業するためのいくつかの手順の例を紹介します。
- Learn how to import and export databases
- Practice running SQL queries
- Incorporate MariaDB into a larger application stack