MySQL5.5 を CentOS6.3 にソースコードからインストールする手順
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 |
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の初期設定
まず、ディレクトリの所有者を変更します。
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 [email protected]=password('newpassword'); Query OK, 0 rows affected (0.02 sec) mysql> \q |
# mysql ERROR 1045: Access denied for user: '[email protected]' (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 にソースコードからインストールした、現場からお送りしました。