OS X LionにMariaDBをインストールしてみる

今日から始まる僕とマリアの新生活

OS X 10.7.5 Lion
MariaDB 5.5.31

インストールユーザー:root
インストール先ディレクトリ:/opt/mariadb-5.5.31
データディレクトリ:/var/mariadb/data


今まで私はRDBMSというものに、Oracle, SQLServer, DB2, PostgreSQLしか使ったことがありません。とりわけ、お気に入りのDBはDB2 Expressです。今までMySQLを避けてきた理由は、「名前がかっこ悪いから」です。そして今MySQLを使わない理由は、「Oracleのものだから」です。MySQLって、プログラムでいうところのMyClassとか、「サンプルかよ!」って感じがします。

MariaDB? ちょーイカシテルと思う。

まあ、そもそも私はDBにそれほど強いわけでもありませんが、ことMySQLについては全くのド素人です。今回、というか、近い将来、仕事でMariaDBを使うことになりそうなので、開発環境(OS X)にMariaDBの環境構築をしてみました。以下はそのときの作業ログです。


・CMakeをダウンロード
http://www.cmake.org/cmake/resources/software.html

※前に何かのタイミングでインストールしていたのですが、何かのタイミングで消してしまったので、入れ直しました。後者の「何か」については、具体的には、つい今しがた、rm -R /opt/localとかやってしまったような気がします。他にも何か大事なものを失ってしまっているような気がしますが、この記事とは関係のない話でしたね。dmgをダウンロードしてインストーラを実行しました。


ソースコードをダウンロード
https://downloads.mariadb.org/mariadb/5.5.31/


・tarを解凍

$ tar xfvz mariadb-5.5.31.tar.gz

ソースファイルの数にびびりました。
やはりC言語でDBを作るとなれば、これくらいのコーディング量が必要なのでしょうね。しかもこれ、C++でなく、Cだったのか。ちょっと意外。1年くらい有給休暇がもらえれば、ソースコードを追ってみたいところです。まあ、それは無理でしょうから、そう遠くないであろう、引退後の楽しみとしておきますか。


・インストール

$ cd mariadb-5.5.31
$ cmake . -DCMAKE_INSTALL_PREFIX=/opt/mariadb-5.5.31 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
$ make
$ make install

cmakeでmakefileを作って、makeしてinstallしてやればOKです。
いくつかwarningが出ていましたが、まあ、Cコンパイラの違いによるものでしょう。気にせず先に進めました。
インストール先は、/opt/mariadb-5.5.31としました。


シンボリックリンクを作成

$ ln -s /opt/mariadb-5.5.31 /opt/mariadb

何か操作する際にいちいちバージョンまで打つのがだるいので、シンボリックリンクを作っておきました。


・DB初期化

$ mkdir -p /var/mariadb/data
$ chown mysql:mysql /var/mariadb/data
$ /opt/mariadb/scripts/mysql_install_db --basedir=/opt/mariadb --datadir=/var/mariadb/data --user=mysql

DBのデータは/var/mariadb/dataというディレクトリ下で管理することにしました。


・設定ファイルを適用

$ cp /opt/mariadb/support-files/my-small.cnf /var/mariadb/data/my.cnf

開発機ですし、今のところミニマムな設定で動かしたいので、my-small.cnfを適用することにしました。my-small.cnfは、64MB以下のメモリで稼働させる小規模なDBサーバー向けだそうです。
ちなみに、設定ファイルをグローバルに適用するなら、/etc/my.cnfに配置すれば良く、実行ユーザーごとに設定を切り替えたいのであれば、~/.my.cnfに置けば良いみたいです。今回はデータディレクトリに設定ファイルを置いたので、これはサーバー固有の設定ということになるそうです。


・DBを実行する

$ sudo /opt/mariadb/bin/mysqld_safe --datadir='/var/mariadb/data' &

起動方法はいくつかあるみたいですが、今回は、「安全な起動」ってやつをやってみました。mysqld_safeで起動した場合、DBサーバーのプロセスを監視して、異常終了したら自動的に再起動とかしてくれるみたいです。
&をつけないで起動しちゃった場合は、Ctrl+Zで抜けてbgコマンドを実行するといいよ。


・接続してみる
さて、いよいよ接続してみます!
マリアちゃんとつながっちゃう><

$ /opt/mariadb/bin/mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 1
Server version: 5.5.31-MariaDB Source distribution

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

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

MariaDB [(none)]> 

おお!つながったぞ! (感動)
うん、この既知感、この画面はなんとなく知ってる。
db2psqlなんかもこんな感じでした。
たぶんきっと、ここでSQLを打つといいんですよね!

とりあえず、SQL打つ以外の操作方法がまったくわからなかったけど、quitって打ったら終了しました。
exitでも終了できました。


MariaDBのrootユーザーにパスワードをつける

mysqladmin -u root password ********

デフォルトではrootユーザーにパスワードがついていないようなので、パスワードを設定しておきました。
以降、ターミナルから接続するときは、-pオプションをつけなければなりません。

$ /opt/mariadb/bin/mysql -u root -p
Enter password: 


・DBを終了する
なんと、mysqld_safeで起動したDBサーバープロセスは、killコマンドで終了するのが正規の運用方法だそうです。狂ってやがる・・・

$ kill `cat /var/mariadb/data/hostname.pid`

困った問題

上記の作業によって、rootユーザーでMariaDBを動かすことには成功しました。けれども、本当は、mysqlというユーザーで動かしたいのです。私のOS Xには、passwd内に、既にmysqlというユーザーが存在します。ところが、

$ whoami
pizza
$ su - mysql
Password:
$ whoami
pizza

mysqlにsuすることができません。どうやら、OS Xではpasswdではなく、別の独自のユーザー管理を行っているらしい。しかし、OS Xのシステム環境設定から、ユーザーを追加しようとしても、mysqlは既に存在するユーザーなので、それはできません。passwdへのmysqlユーザーの追加がいつどこで行われたのかもわからないので、消すのも怖い。
困った・・・
別の名前のユーザーを作ればいいんでしょうけど、それもなんだかなぁ・・・