MariaDB/MySQL C client libraryまとめ

ちょっと勘違いしていたので、まとめ。

(2014.12.3追記:以下の書籍にも記述した。)


プロトコルバージョン

まず、プロトコルから。(少なくとも)MySQL 5.0.20以前から、プロトコルバージョンは"10"。

MySQL 5.6.3xもMariaDB 10.0.11も、プロトコルバージョンは10。

なので、ver5.0のmysqlクライアントでMySQL5.6サーバやMariaDB 10.0に接続なんてことができる。

ソースコードにバンドルされてるクライアントライブラリと、ライセンス

MySQLソースコードには、当然クライアントライブラリのソースも含まれ、ライセンスはGPL

MariaDBソースコードに含まれるクライアントライブラリはMySQLのforkで、やはりGPL。ここ、勘違いしてた。


MariaDBのクライアントライブラリはLGPL」というのは「別途、Cのクライアントライブラリを提供している」ということなので注意。

libmysqlclient.so

共有ライブラリlibmysqlclient.soは、5.0でのlibmysqlclient.so.15から徐々にナンバリングが上がり、MySQL5.6/MariaDB 10.0ではlibmysqlclient.so.18。

ソースコードからインストールすると、MySQL5.6/MariaDB 10.0ではlibmysqlclient.so.18だけど、MySQL/MariaDBの公式リポジトリからパッケージでserver/client/common/compatをインストールすると、少し古めのものが入る。
MySQL/MariaDB-shared-XXXX.rpmで最新版が入る感じ。何故かは分からない。

これらのライセンスはGPLLGPLじゃない。


念のため。上にも書いたように、これらのプロトコルバージョンはすべて"10"。

MariaDBが提供するLGPLのクライアントライブラリ

ということで、LPGLのクライアントライブラリを使いたいときは、ここからダウンロードしなければならない。

因みに、このライブラリのプロトコルバージョンも"10"である。


mysqlクライアント

これも思い込みで、libmysqlclient.soを呼んでると思ったら、じつはlibmysqlclient.aをstatic linkしていた。