CentOS に MySQL をソースコードからインストールする手順をご紹介します。(2012/11/08 修正)
公式ドキュメント(英語)にインストール手順は書いてあります。
・MySQL :: MySQL 5.5 Reference Manual :: 2.10.2 Installing MySQL from a Standard Source Distribution
CentOS5.7 64bit
MySQL5.5.17
まず root user になります。
$ su
MySQL をデーモンで起動するためのグループとユーザーを作成します。
# groupadd mysql
# useradd -g mysql -d /usr/local/mysql mysql
# passwd mysql
# cd /usr/local/src
# wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.17.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
# tar zxvf mysql-5.5.17.tar.gz
# cd mysql-5.5.17
ソースコードをビルドするために、ディレクトリ内に configure を探しても見つからなかったので調べてみたら、MySQL 5.5系より cmake 推奨となり configure がなくなったようです。
代わりに cmake でコンパイルするみたいです。
・CentOS yum dag リポジトリの追加方法 | Linux LABS
・MySQL 5.5.9 インストール Linux cmake | Linux LABS
cmake が入っていない場合は yum でインストールしておきます。
# yum install -y cmake
次に、MySQL依存パッケージをyumで入れておきます。
# yum install -y ncurses-devel
入れてないでcmakeすると、以下のようなエラーが出るので注意です。
- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:82 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is li bncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
そのまま再度、cmake をしても、エラー表示を繰り返してしまうので、一旦MySQLのディレクトリを削除し再実行します。
# rm -fr /usr/local/src/mysql-5.5.17
# cd /usr/local/src
# tar zxvf mysql-5.5.17.tar.gz
# cd mysql-5.5.17
cmake する際のオプションは普通にインストールするときは2~3個ぐらいでいいみたいです。
cmake をデフォルトで実行したときに、何が入るかだけ確認しておきましょう。
・MySQL :: Building MySQL from Source :: 3 MySQL Source-Configuration Options
cmake . \\
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \\
-DDEFAULT_CHARSET=utf8 \\
-DWITH_EXTRA_CHARSETS=all \\
-DDEFAULT_COLLATION=utf8_general_ci \\
-DWITH_PIC=1
cmake時に、オプションで -DDEFAULT_CHARSET=utf8 付けたら、-DDEFAULT_COLLATION= … も付けないとうまくいかないので注意が必要らしいです。
make
make install
以上でインストール完了です。
まず、ディレクトリの所有者を変更します。
chown -R mysql:mysql /usr/local/mysql
次に、データベースを初期化します。
/usr/local/mysql/scripts/mysql_install_db \\
--user=mysql \\
--basedir=/usr/local/mysql \\
--datadir=/usr/local/mysql/data
データベースを初期化せずに他の設定をすると、下記のようなエラーが出ます。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
自動起動も設定しておきます。
cp /usr/local/src/mysql-5.5.17/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
以下のコマンドを実行して状態を確認します。期待したランレベルでonになっていれば問題はありません。
# chkconfig --list | grep mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
実行環境に合わせて、起動スクリプトを変更します。
vi /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
設定ファイルをコピーします。設定ファイルは必要に応じて編集してください。
cp /usr/local/src/mysql-5.5.17/support-files/my-medium.cnf /etc/my.cnf
以上で完了です。
MySQLを service コマンドで起動して、ちゃんとインストールされているか確認します。
service mysql start
# vi ~/.bashrc
PATH="$PATH":/usr/local/mysql/bin
# source ~/.bashrc
# mysql -V
mysql Ver 14.14 Distrib 5.5.17, for Linux (x86_64) using EditLine wrapper
以下のコマンドでログイン出来れば、インストール成功です。
mysql -u root
ついでに root のパスワードも変更しておきます。
mysql> set password for root@localhost=password('newpassword');
Query OK, 0 rows affected (0.02 sec)
mysql> \\q
# mysql
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \\g. ……
これで PASSWORD の設定が完了しました。初期設定は以上です。
MySQL を起動時に以下のようなエラーが出ました。
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid)
プロセスを見てみると既に起動しているみたいなのですが mysql -u root でログイン出来ません。
少々荒いですが kill コマンドでプロセスを殺して、また MySQL を起動してやれば上手くいきました。
以下、手順です。
# ps aux | grep mysql
mysql 32031 0.0 3.1 337520 32944 ? Sl 00:28 0:00 /usr/local/mysql/bin/mysqld --localdomain.err --pid-file=/usr/local/mysql/data/localhost.localdomain.pid --socket=/tmp/mysql.
# kill 32031
# ps aux | grep mysql
# /etc/init.d/mysql start
Starting MySQL....... [ OK ]
# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \\g.
Your MySQL connection id is 4
Server version: 5.5.17-log Source distribution
Type 'help;' or '\\h' for help. Type '\\c' to clear the buffer.
mysql>
以上、MySQL 5.5 を CentOS 6.3 にソースコードからインストールした、現場からお送りしました。