第1部 構築編

お試し

MySQL を入れてみるぞ

いやぁ~
のんびりやっていたら LAMP 構成の LA しかやっていないことに今更ながら気付いた(爆)
ということで、今回は MySQL など入れてみる。

MySQL はオープンソースで開発されているリレーショナルデータベースのひとつだ。
オープンソース開発と言えば他には PostgreSQL が超有名だな。
MySQL は WEB で運用することを前提に設計されていて、高速性堅牢性が重視されている。
そのかわり、Oracle とかに代表される RDBMS の様な高機能ではなく、とにかく単純に運用できるようになっているみたい。
俺も今仕事のテスト環境に Windows 版を入れて使っているんだが、なんちゅ~か………

おひおひ………

と思うほどに簡単に使えたんだね、これが。
Oracle だとインストールして、データベース作成して、表領域作ってユーザ作って………と色々と手続きを踏まなければならないところを、

create database TESTDB;

コレ、一発(爆)
たしかに楽だったねぇ~
ただし、つい最近までトランザクション管理が出来なかったので、本当にややこしい更新系のプロセスには向かないみたい。
SQL は全てオートコミットロールバック不可、Oracle 使いには信じられない事態だと思う。
今は一応 Max 版という別パッケージでトランザクション対応のテーブルを作れるようになっているけど、WEB で高速性を重視するならトランザクションを捨ててしまうのも手。
設計次第ではトランザクションをサポートしていない RDBMS でも何とか出来てしまうものだったりして(笑)

と、前置きが長くなったが、とにかく MySQL である。
安定版はこれを書いている現在 3.23.52 まで来ているらしいけど、手元には 3.23.49 があったりするので、これを入れてみる。

要は手持ちの解説書付属の CD-ROM に 3.23.49 が入っているのだ。
ダウンロードが面倒なので、これで試してみる。

取り敢えずソースを入れるために /usr/local/src/mysql ディレクトリを作成する。
んで、CD-ROM から mysql-3.23.49.tar.gz をコピー、tar ボールを展開する。

tar xfz mysql-3.23.49.tar.gz

んで、出来たディレクトリ mysql-3.23.49 へ移動して、configure の実行だ。

./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql

細かいパラメータの説明は専門書籍参照ね

取り敢えず追い切れないほどのメッセージが眺めながら、最後に、

Thank you for choosing MySQL!

と出たので、多分大丈夫なんだろう(爆)
んで、コンパイル。

make

いやぁ~時間かかるなぁ~
C 言語って基本的にコンパイルに時間のかかる言語仕様だしなぁ~
んで、コンパイル通ったみたいなので、

make install

でインストール。
そのまま解説に沿って、

./usr/local/mysql/bin/mysql_install_db

で初期化する。
んで、/usr/local/mysql/var が実際にデータベースファイルが格納されるディレクトリらしいので、先ほど指定した mysql ユーザの所有物にしてしまう。

chown -R mysql /usr/local/mysql/var

としたのだが………
無効なユーザ言われてしまった(涙)
解説書を読み返してみると………

あ゛………

最初に MySQL 用のユーザを登録してやがった(涙)
と言うわけで、

adduser mysql

としようかと思ったんだが、これ、もしかして巨大なセキュリティホールではないか?
だってログイン出来ちゃうんでしょ?
というわけで、手元にある Red Hat Linux の解説本を探す、探す、探す………
怪しい記述を発見。

コンソールや SSH ではログインできないが、FTP ではログインできるユーザを作るという箇所があって、コレなら行けるのではと思って早速 finger ftp で ftp ユーザの情報を調べると、シェルが /sbin/nologin となっている。
んで、これを設定してみる。

adduser mysql -s /sbin/nologin

なで、su コマンドで mysql ユーザになろうとすると………

This account is currently not available.

このアカウントは現在利用可能ではありません、という意味合いだな。
多分コレでいけるだろう。
もう一度 /usr/local/mysql/var のオーナとグループを変更してみる。

chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql/var

ま、今回は当然このコマンド自体はうまくいく。
では、MySQL の動作試験をしてみよう。
/usr/local/mysql/share/mysql/mysql.server が起動スクリプトらしいので、これに以下のようにパラメータを渡して起動してやる。

/usr/local/mysql/share/mysql/mysql.server start

………ん?

Starting mysqld daemon with databases from /usr/local/mysql/var

と表示した後にうんともすんとも言わない?
でもなんでシェルプロンプトの、しかもユーザが入力する位置にメッセージが出るんだ?
ん~と考えながら徐に Enter を押すと、シェルプロンプトに復帰した??
なんだったんだ?
ん~、ま、とにかく一度試してみよう。

/usr/local/mysql/bin/mysql -u root

で、既存のユーザ root でログインしてみると、なんかうまくログインできる。
んで、

use mysql;

とタイプして利用するデータベースを選択してやって、

show tables;

とタイプすると、テーブル一覧が表示。
どぉ~やらまともに動いているらしい………
んじゃ、取り敢えず root のパスワードを設定する。

set password for root=password('********');

ま、取り敢えずパスワードは内緒(笑)
設定が終わったら exit; で一度抜けて、もう一度入ってみる。

/usr/local/mysql/bin/mysql -u root

………スイマセン、怒られました(涙)
タイプミス(爆)

/usr/local/mysql/bin/mysql -u root -p

ちゃんとパスワードが聞かれ、正しく入力してやると正常にログイン成功
結構うまくいっているらしい。

この辺りの MySQL 標準のクライアントの使い方は Windows 版とほぼ同じ。
Windows 版で散々使い倒しているので、この辺りの操作は慣れたもの(笑)

さらに、最初から用意されている匿名ユーザを削除する。
ユーザ一覧は mysql データベースの user テーブルに格納されているので、以下のように一括削除。

use mysql;
delete from user where User='';

2 行削除。
んで select * from user とタイプしてユーザ一覧を見てみると………?
なぜか root が二人居る?
よく見ると Host が localhost か mirie (サーバに付けた仮称) かで違うらしい。
パスワードが設定されているのは localhost の root だけなので、気分が悪いから以下の SQL を叩いてパスワードを設定してしまう。

update user set Password=password('********') where Host='mirie';

もう一度 select * from user をタイプするとちゃんと両方の root のパスワードが設定されていたようなので、これで大丈夫らしい。

さて、最後に。
自動起動の設定をする。
Red Hat Linux なんかの System V 系の UNIX は起動スクリプトを /etc/init.d 以下で集中管理する。
というわけで、先ほど MySQL を起動するのに利用したスクリプトを /etc/init.d にコピーしてしまう。
その際、分かりやすいように mysqld なんて名前にしてしまおう。

cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld

んで、Red Hat Linux 用に開発されたスクリプトで、サービスを登録する。

chkconfig --add mysqld

んで、chkconfig --list で見てみると、ランレベル 2 ~ 5 で ON、0、1、6 で OFF というように設定されている。
でも、取り敢えずいつも使っているランレベル 3 以外で MySQL は要らないと思うし、以下のようにして設定を切ってしまう。

chkconfig --level 2 mysqld off
chkconfig --level 4 mysqld off
chkconfig --level 5 mysqld off

これで次回起動時から普通に MySQL daemon が起動しているはず。
ちゅ~わけで、とりあえず、テスト、リブート(笑)
起動してから再び

/usr/local/mysql/bin/mysql -u root -p

でログインすると、正常にログイン成功
どうやらなんとか MySQL はインストールできたらしい。

これでやっと LAMP プラットフォームの LAM まで来たというわけだなぁ~

Valid HTML 4.01 Strict Valid CSS!