MariaDB 利用ノート

Since:

2013

Official site:

<https://mariadb.org/>

CLI:

mariadb, mysql

Server Version:

11.4.2-MariaDB-ubu2404 mariadb.org binary distribution

MariaDB をとりあえず利用するまでの手順を記す。ただし、 Docker を利用するものとする。

Installing and Using MariaDB via Docker - MariaDB Knowledge Base の記述に従えばデータベースシェル起動まではすんなり実現するはずだ。以下に要点をまとめておく。

イメージを入手してコンテナーを稼働する

最初に Docker Hub から公式イメージを検索して、それをローカルに持ってくる:

MariaDB イメージ取得例
$ docker search mariadb --filter=stars=5000
$ docker pull mariadb
$ docker images --filter reference=mariadb

コンテナーに例えば mariadbtest などの名前を付けて稼働する。このときに MariaDB に対して必要な情報、環境変数を指定する:

MariaDB コンテナー稼働コマンド例
$ docker run --name mariadbtest -e MARIADB_ROOT_PASSWORD=mypass -p 3306:3306 -d mariadb

あくまでも練習用の手順なので、パスワードの扱いはここではぞんざいだ。

データベースクライアントを実行する

コンテナー内で稼働している MariaDB サーバーに CLI でアクセスしたい。このコンテナー内でアクセスする方法と、ホスト側で CLI を使ってアクセスする方法があり得る。前者は:

稼働中の MariaDB コンテナーで CLI を対話的に起動する例
$ docker exec -it mariadbtest mariadb -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 11.4.2-MariaDB-ubu2404 mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

後者を行うにはコンテナーの IP アドレスが必要だ。次の例ではホスト側にある mysql を使って接続するが、ホストにおいても mariadb が実行可能であればもちろんそれが使える:

ホスト側 CLI からコンテナーの MariaDB サーバーに接続する例
$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariadbtest
172.17.0.2
$ mysql -h 172.17.0.2 -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 11.4.2-MariaDB-ubu2404 mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

利用者ノート

IP アドレスを適当な変数を定義してそれに代入しておくのが行儀が良いかもしれない。

コンテナーを一時停止する

MaridDB コンテナーを一時停止、再開するには次のどちらかの組み合わせを実行する:

コンテナー一時停止&再開例
$ docker stop mariadbtest
$ docker start mariadbtest

$ docker pause mariadbtest
$ docker unpause mariadbtest

後者の方法はシステム資源を一時的に解放する必要がある場合に便利であることを覚えておく。

SQL などの練習をする

Beginner MariaDB Articles - MariaDB Knowledge Base のいくつかの SQL 文やコマンドはそのまま実行可能。

別のページにチュートリアルリンク一覧がある。

ドットファイル

構成ファイルのパスはヘルプコマンドで確認可能:

ロードされるドットファイルパスを得る例
$ mariadb --help --verbose | head -n 10
mariadb from 11.4.2-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using  EditLine wrapper
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Usage: mariadb [OPTIONS] [database]

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
...

次に述べるバインドマウントの手法を用いて、前項の構成ファイルをホスト側に用意することも可能。

データ格納場所

データをホスト側のどこに格納するかを指定する方法はいくつかあるようだ。いずれにせよコンテナー稼働時に指定する。

Docker Hub の記事にあるコマンド例(改変)
$ mkdir datadir
$ docker run --name mariadb \
    --mount type=bind,source=$(pwd)/datadir,target=/var/lib/mysql \
    -e MARIADB_ROOT_PASSWORD=mypass -d mariadb

これで mariadb で実行したデータベース操作がホスト側ディレクトリー $(pwd)/datadir 以下に作用する。きちんとした内容は mariadb - Official Image を参照しろ。

コンテナーを廃棄する

MariaDB コンテナーが用済みになったらそれを削除することでデータベースも消去される。失いたくない場合には docker run の段階でマウントなどを指定するか、コンテナーにあるデータベースをホスト側に退避させるのだろう。

コンテナーを捨てるコマンド例
$ docker stop mariadbtest
$ docker rm mariadbtest

ディスクに余裕がなければ MariaDB イメージも削除する。


ネットワークや Dockerfile など、未実施の項目が残っているが、ひとまず終わる。