トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

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.