MySQLをソースからインストール(RedHat9)
MySQLをソースからインストール(RedHat9)
MySQLをソースのビルドから行います。RPMでもいいのですが、どうもUTF-8対応が怪しかったためコンパイラオプションを指定してMySQLの実行ファイル群を作成する方法を説明します。必ずroot権限でインストール作業を行うようにしてください。「http://www.mysql.com/」よりソースのtar.gz形式をダウンロードします。
2005/12現在だとちょっと古いバージョンですが、「mysql-4.1.10a.tar.gz」をインストールしたときの手順を書きます。なお、インストールする際には過去のMySQLのサービスが停止されていること、関連するRPMなどがアンインストールされていることを確認します。
rpm -qa | grep MySQL
のようにすると、RedHat9でのRPM形式でインストールされたMySQL関連のものがインストールされている場合は列挙できます。
MySQLのソースをビルド
tar.gzを作業ディレクトリにて解凍し、作成されたディレクトリに移動します。
tar xvfz mysql-4.1.10a.tar.gz cd ./mysql-4.1.10a
設定ファイルを初期化し、ビルドします。
./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charset=all --with-mysqld-user=mysql make make install
「./configure」の指定は1行で書くようにしてください。ここでは、デフォルトのキャラクタセットをutf8(UTF-8)にしています。また、インストールされたファイルが置かれるディレクトリは「/usr/local/mysql」になります。
make作業は結構時間がかかります。なにかエラーが出た場合は、ビルドに必要なパッケージが足りていない場合があります。その場合は一度指摘のあったパッケージなどをインストールしてからMySQLのソースディレクトリにて「make clean」として一度コンパイルしたオブジェクトファイルなどを破棄してから、再度 ./configure〜makeを行ってください。MySQLビルドには「glibc/glibc-devel/libstdc++/libstdc++devel/gcc-c++/ncurses/ncurses-devel」などが必要です。
make installで「/usr/local/mysql」にビルドした必要なファイル類がコピーされます。まだ「mysql-4.1.10a」内のファイルは必要ですので削除せずに次に進みます。
/usr/local/mysqlでの作業
cd /usr/local/mysql
でインストールされたディレクトリに移動します。
以下でデータベースを初期生成します。
./bin/mysql_install_db --user=mysql
以下で、mysqlユーザを追加します(すでに存在している場合は不要)。
groupadd mysql useradd mysql -g mysql
以下で、実行権限をディレクトリに与えます。
chown -R root /usr/local/mysql chown -R mysql /usr/local/mysql/var chown -R mysql /usr/local/mysql
シンボリックリンクを指定
どのディレクトリに移動してもmysqlのコマンドラインに移動できるようにするには、以下のようにシンボリックリンクを設定します。
ln -s /usr/local/mysql/bin/mysqld_safe /usr/local/bin/mysqld_safe ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin/mysqladmin ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
設定ファイルのコピー
MySQLの制御を行うための設定ファイル「/etc/my.cnf」を生成します。
まず、MySQLのソースディレクトリ「mysql-4.1.10a」に移動します。この中の「./support-files/my-medium.cnf」が設定ファイルです。MySQLの規模によって設定ファイル(my-xxx.cnf)が複数用意されています。これを「/etc/my.cnf」としてコピーします。
cp ./support-files/my-medium.cnf /etc/my.cnf
次に「vi /etc/my.cnf」として設定ファイルを編集します。各セクションにて「default-character-set=utf8」を追加します。これにより、MySQLの処理を行うときはUTF-8で使うように統一しています。
[mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8 [mysqld] default-character-set=utf8
これでmy.cnfを保存します。
起動スクリプトの作成と自動起動の設定
MySQLのソースディレクトリ「mysql-4.1.10a」に移動した状態で、「./support-files/mysql.server」を「/etc/rc.d/init.d/mysqld」としてコピーします。このファイルが起動用のスクリプトファイルです。
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
コピーしたファイルに実行権限を与えます。
chmod 755 /etc/rc.d/init.d/mysqld
最後にOSが起動したときに自動的にmysqldサービスが立ち上がるように、chkconfigの設定を行います。
chkconfig --add mysqld
これで、OS起動時にmysqldサービス(MySQLのサーバプロセス)が起動します。
以上でMySQLのソースファイルは不要となります。tar.gzを解凍したときに出来た「mysql-4.1.10a」ディレクトリ自身を「rm -rf mysql-4.1.10a」のようにして削除します。
MySQLサーバサービスの起動と停止
以下でサービスを起動します。
/etc/rc.d/init.d/mysqld start
以下でサービスを停止します。
/etc/rc.d/init.d/mysqld stop
以下でサービスを再起動します。
/etc/rc.d/init.d/mysqld restart
MySQLのrootユーザのパスワードを指定
mysqld(MySQLのサービス)を起動した状態で以下を実行することにより、MySQLのrootユーザのパスワードを指定します。
mysqladmin -u root password xxxx
ここでは、パスワードを「xxxx」に設定していることになります。
これでインストール作業はすべて完了です。
キャラクタセットの確認
mysqldが起動している状態で、「mysql」を実行してMySQLのコマンドラインに移動してください。
mysql -u root -p
この後、rootユーザのパスワードを聞いてきます。上記で設定したパスワードを入力します。
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 73 to server version: 4.1.10a-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
みたいに出れば成功です。
ここで「show variables like 'char%';」と入力してください。以下のように表示されましたか?
+--------------------------+----------------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/mysql/charsets/ | +--------------------------+----------------------------------------+
すべてがUTF-8になっているのが分かります。これで、MySQLを使う上で 文字コードをUTF-8で統一してIn/Outすることにより、文字化け不都合および多言語対応ができます。
クライアント・サーバのキャラクタセットが統一されていないと文字化けする原因になりますので、これはよく確認するようにしてください。
ところでデータの実体はどこにあるの?
上記のようにソースよりインストールしたときのMySQLのデータ自身は、「/usr/local/mysql/var」ディレクトリ内に格納されています。「create database xxx」で作成したデータベースはディレクトリで表現されているのが分かります。バックアップを取る場合は、このディレクトリごとを保管しておけばよさそうですね。
Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.