MariaDB 利用ノート¶
- Since:
2013
- Official site:
- 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 から公式イメージを検索して、それをローカルに持ってくる:
$ docker search mariadb --filter=stars=5000
$ docker pull mariadb
$ docker images --filter reference=mariadb
コンテナーに例えば mariadbtest
などの名前を付けて稼働する。このときに
MariaDB に対して必要な情報、環境変数を指定する:
$ docker run --name mariadbtest -e MARIADB_ROOT_PASSWORD=mypass -p 3306:3306 -d mariadb
あくまでも練習用の手順なので、パスワードの扱いはここではぞんざいだ。
データベースクライアントを実行する
コンテナー内で稼働している MariaDB サーバーに CLI でアクセスしたい。このコンテナー内でアクセスする方法と、ホスト側で 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 が実行可能であればもちろんそれが使える:
$ 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
...
次に述べるバインドマウントの手法を用いて、前項の構成ファイルをホスト側に用意することも可能。
データ格納場所
データをホスト側のどこに格納するかを指定する方法はいくつかあるようだ。いずれにせよコンテナー稼働時に指定する。
$ 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 など、未実施の項目が残っているが、ひとまず終わる。