この記事では、MariaDB(MySQL)のバージョンを確認する方法を解説しています。
知ってしまえば簡単なことです。
しかし、MariaDBのバージョン確認にはある罠が存在しています。
MariaDBに限ったことではなく、データベース全般に言えることかもしれません。
本記事の内容
- データベースのバージョン確認における罠
- MariaDB(サーバー)のバージョンを確認する
それでは、上記に沿って解説していきます。
データベースのバージョン確認における罠
罠について説明するには、サーバーとクライアントの定義が必要となります。
定義と言うと大げさですが、サーバーとクライアントに対する共通認識ということです。
そこで、次の流れで罠を説明していきます。
- サーバーとクライアントの定義
- バージョン確認における罠
上記を説明していきます。
サーバーとクライアントの定義
サーバーの定義も書いていますが、主にクライアントの定義がメインです。
サーバーとは、データベースの本体と考えて問題ありません。
一般的にデータベースには、以下の2つの機能・役割が存在しています。
- サーバー
- クライアント
通常、私たちが知りたいのはサーバーのバージョンです。
もちろん、状況によってはクライアントが注目されることもあるでしょう。
しかし、基本的にはサーバーの方が主役です。
そのことを示すように、サーバーをインストールするとクライアントも自動的にインストールされてきます。
つまり、クライアントはサーバーのおまけということですね。
ただ、そんなクライアントは重要な役割を担っています。
そして、データベースによっては多くのクライアントが存在しています。
例えば、MySQL(MariaDB)のクライアントは以下が公開されています。
- mysql — MySQL コマンド行ツール
- mysqladmin — MySQL サーバーの管理を行うクライアント
- mysqlcheck — テーブル保守プログラム
- mysqldump — データベースバックアッププログラム
- mysqlimport — データインポートプログラム
- mysqlshow — データベース、テーブル、およびカラム情報の表示
- mysqlslap — 負荷エミュレーションクライアント
サーバーをインストールすると、もれなく一緒についてきます。
その中でも、みなさんが認識するクライアントは、「mysql」になると思います。
「コマンド行ツール」のことですね。
この記事では、このコマンド行ツールのことをクライアントと定義します。
バージョン確認における罠
データベースには、サーバーとクライアントがありましたね。
そして、それぞれにもバージョンが存在しています。
さらに、サーバーとクライアントの区別がつきにくいのです。
実際、私は以下のコマンドで勘違いしました(正確には忘れていました)。
$ mysql --version mysql Ver 15.1 Distrib 10.5.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
MariaDBのインストール後、バージョン確認をする際に発行したコマンドです。
これは、クライアントのバージョン確認となります。
なお、MariaDBのインストールに関しては次の記事で解説しています。
これは、私だけに限ったことではありません。
勘違いしているプログラマー・記事も多いです。
もっと言うと、これはMySQL・MariaDBだけの話でもありません。
PostgreSQLでも起こっていることです。
$ psql --version
上記は、PostgreSQLにおけるクライアントのバージョン確認のコマンドです。
しかし、サーバーのバージョン確認のコマンドだと勘違いしている人が結構います。
もっと言うと、サーバーとクライアントの区別を知らない人が多い印象です。
そういう私も数年前までは区別できていませんでした・・・
ちなみに、Googleで「PostgreSQL バージョン確認」で検索してみてください。
上位に出てくる記事において、高い割合で勘違いを確認できるでしょう。
以上、罠について説明してきました。
罠を具体的に表現すると、クライアントのバージョンをサーバーのバージョンだと勘違いしやすいということです。
勘違いを引き起こす情報(記事)が、世間(検索)にあふれているとも言えますね。
MariaDB(サーバー)のバージョンを確認する
やっと、本題です。
この本題に達するまでの内容の方が重要なのですけどね。
確認するためのコマンドなんて、知れば終わりです。
あと、MySQLでも利用可能です。
確認するタイミングは、以下の2つがあります。
- サーバーへの接続前
- サーバーへの接続後
分けて説明していきます。
サーバーへの接続前
サーバーへの接続前なら、以下の2つのコマンドが利用可能です。
「sudo」が邪魔なんで、rootになってコマンドを発行しています。
- mysqladminコマンド
- mysqldコマンド
mysqladminコマンド
# mysqladmin version mysqladmin Ver 9.1 Distrib 10.5.8-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.5.8-MariaDB-1:10.5.8+maria~bionic Protocol version 10 Connection Localhost via UNIX socket UNIX socket /run/mysqld/mysqld.sock Uptime: 1 hour 24 min 2 sec Threads: 2 Questions: 67 Slow queries: 0 Opens: 31 Open tables: 25 Queries per second avg: 0.013
サーバーのバージョンと明示されています。
Server version 10.5.8-MariaDB-1:10.5.8+maria~bionic
以下は、あくまでmysqladmin(クライアント)のバージョンです。
mysqladmin Ver 9.1 Distrib 10.5.8-MariaDB, for debian-linux-gnu on x86_64
mysqldコマンド
mysqlではなく、mysqldです。
mysqlはクライアント、mysqldはサーバーと覚えてください。
# mysqld --version mysqld Ver 10.5.8-MariaDB-1:10.5.8+maria~bionic for debian-linux-gnu on x86_64 (mariadb.org binary distribution)
クライアントを経由せず、直接サーバーからバージョンを取得していることになるのでしょう。
mysqladminの場合は、mysqladminというクライアントを間に挟んでいます。
サーバーへの接続後
サーバーへの接続にはいろいな方法があるでしょう。
今回は、クライアントの「mysql」でサーバーへ接続します。
MariaDBの場合は、「mariadb」だけでサーバーへ接続できます。
# mariadb Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 62 Server version: 10.5.8-MariaDB-1:10.5.8+maria~bionic 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)]>
サーバーのバージョン確認方法は、以下の2つの方法があります。
- status
- select version()
status
MariaDB [(none)]> status -------------- mysql Ver 15.1 Distrib 10.5.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 Connection id: 63 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server: MariaDB Server version: 10.5.8-MariaDB-1:10.5.8+maria~bionic mariadb.org binary distribution Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /run/mysqld/mysqld.sock Uptime: 1 hour 50 min 20 sec Threads: 2 Questions: 79 Slow queries: 0 Opens: 31 Open tables: 25 Queries per second avg: 0.011 --------------
サーバーのバージョンと明示されています。
Server version: 10.5.8-MariaDB-1:10.5.8+maria~bionic mariadb.org binary distribution
mysqladminコマンドと似ていますね。
select version()
MariaDB [(none)]> select version(); +--------------------------------------+ | version() | +--------------------------------------+ | 10.5.8-MariaDB-1:10.5.8+maria~bionic | +--------------------------------------+ 1 row in set (0.001 sec)
「mysqldコマンド」同様にシンプルな結果です。