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の初期サーバーセットアップガイドに従ってこれをセットアップします。
本書の執筆時点で、Ubuntu 20.04のデフォルトのAPTリポジトリには、MariaDBバージョン10.3が含まれます。
インストールするには、apt
を使用してサーバーのパッケージインデックスを更新します。
- sudo apt update
次に、パッケージをインストールします。
- sudo apt install mariadb-server
これらのコマンドによりMariaDBがインストールされますが、パスワードを設定したり、その他の構成の変更を求められることはありません。デフォルト設定では安全でないMariaDBがインストールされるため、ここではmariadb-server
サーバーパッケージがサーバーへのアクセスを制限して未使用アカウントを削除するスクリプトを使用します。
新しい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サーバーに認証する方が好ましい場合には従う必要があります。
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インストールをテストしてみましょう。
デフォルトリポジトリからインストールされた場合、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サーバーが確認されたので、サーバーで作業できる次のステップの例をいくつか以下に挙げます。
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!