MySQL5.5 を CentOS6.3 にソースコードからインストールする手順

CentOS に MySQL をソースコードからインストールする手順をご紹介します。(2012/11/08 修正)

MySQL

公式ドキュメント(英語)にインストール手順は書いてあります。

MySQL :: MySQL 5.5 Reference Manual :: 2.10.2 Installing MySQL from a Standard Source Distribution

前提条件

CentOS5.7 64bit
MySQL5.5.17

MySQLのグループとユーザーの作成

まず root user になります。

$ su

MySQL をデーモンで起動するためのグループとユーザーを作成します。

# groupadd mysql
# useradd -g mysql -d /usr/local/mysql mysql
# passwd mysql

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

cmake でソースコードをビルド

ソースコードをビルドするために、ディレクトリ内に 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= … も付けないとうまくいかないので注意が必要らしいです。

MySQL のインストール

make
make install

以上でインストール完了です。

MySQLの初期設定

まず、ディレクトリの所有者を変更します。

UNIXコマンド [chown]

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

MySQL の path を通す

# 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の起動に失敗したときの対処方法

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 にソースコードからインストールした、現場からお送りしました。

参考情報