読者です 読者をやめる 読者になる 読者になる

ボールを蹴りたいシステムエンジニア

ボール蹴りが大好きなシステムエンジニア、ボールを蹴る時間確保の為に時間がある時には勉強する。

LinuxへのMySQL5.5インストール(さくらVPS)

今回はさくらVPSへMySQLをインストールします

・環境

さくらVPS
Linux
CentOs6.4
MySQL5.5.1

仕事でも何度かMySQLインストールやった事あるけど
いつもyumで簡単インストールしてました。

そもそも、簡単だからよくyum使うけど
ソースからのインストールとyumインストールの違いについて
良く分かってなかったのでちょっと調査。

※参考
yumとソースインストールのメリット・デメリット [遊びとお勉強の村]

なるほど。
特に設定を考慮せずとりあえず手っ取り早くインストールしたければyum、
環境に応じて柔軟な設定をしたければ手間だけどソースからインストールって事で良いのかな。

今回は勉強も兼ねているので、ソースからインストールしたいと思います。

1.ソースダウンロード、解凍

ダウンロードと解凍します

cd /usr/local/src/
wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.10.tar.gz
tar xzf mysql-5.5.10.tar.gz

MySQL :: Download MySQL Community Server
いつもこのサイトで迷子なるのですが、
「Looking for previous GA versions?」の「Archived versions」って所から
辿ったほうが個人的にはダウンロードリンクに辿り着ける気がします。
ここから32bit版のバージョン5.5.10をダウンロードしました

2.インストール

コンパイラ

mysql5.5からはconfigurateでは無くcmakeでコンパイルするらしいです。

cmake無かったようなのでインストール
後、MySQL依存パッケージのncursesってのも必要らしいので
とりあえずインストール
こういう時yum便利

yum install -y cmake
yum install ncurses-devel

基本的なオプションを指定して実行

cd mysql-5.5.10
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_PIC=1
  • DCMAKE_INSTALL_PREFIX

MySQLのホームディレクトリ、指定しない場合デフォルトの/usr/localに出力されるらしい
色々と面倒になるぽいので、指定するようにする。
ここで指定する事で複数バージョンのmysqlの管理も可能になるかと

  • DDEFAULT_CHARSET

デフォルトの文字セット

  • DDEFAULT_COLLATION

文字セット関連

  • DWITH_EXTRA_CHARSETS

デフォルトで指定された文字コード以外をサポートしたい場合の指定
個別でも指定できるみたいだけど面倒なのでall

Unixドメインソケットのパス?
複数mysqlをインストールするので無ければ必要ないかも

  • DWITH_PIC

共有ライブラリ使用する為の設定?
指定したほうが良いぽい


ちなみに
コンパイルはconfigurateで行うと思い調べていました・・・
今回は使用しないですが参考までに残しておきます
5.5以前のバージョン時に…

./configure --prefix=/usr/local/mysql \
              --enable-assembler \
              --with-charset=utf8 \
              --with-unix-socket-path=/var/lib/mysql/mysql.sock \
              --with-embedded-server \
              --with-extra-charsets=all 
  • prefix

MySQLのホームディレクトリ、指定しない場合デフォルトの/usr/localに出力されるらしい
色々と面倒になるぽいので、指定するようにする。
ここで指定する事で複数バージョンのmysqlの管理も可能になるかと

  • enable-assembler

ググったけど分からなかった、何だこれ。
とりあえず指定することにする

  • with-charset

デフォルトの文字セット

Unixドメインソケットのパス?

  • with-embedded-server

分からない!けどとりあえず指定

  • with-extra-charsets

デフォルトで指定された文字コード以外をサポートしたい場合の指定
個別でも指定できるみたいだけど面倒なのでall

ビルド&インストール
make
make install

ビルド時に流れるログ形式がconfigurateとは違う
個人的にはこっちの方がなんか好きかも


3.mysql初期設定

データベースの初期

システムテーブルを作成します

/usr/local/mysql/scripts/mysql_install_db \
		--user=mysql \
		--basedir=/usr/local/mysql \
		--datadir=/usr/local/mysql/data
  • user

mysqldを実行するときのログインユーザ名

  • basedir

MySQL データ ディレクトリ

多分この辺りは基本的な設定なので指定しておく


初期化実行時エラー出ました、、

130908  9:07:30 [ERROR] /usr/local/mysql/bin/mysqld: unknown option '--skip-locking'
130908  9:07:30 [ERROR] Aborting

skip-bdbオプションは,5.5ではサポートされない事によるエラーらしいです
設定ファイル確認した所、skip-lockingの設定ありました

less /etc/my.cnf
skip-locking 

実は本mysql5.5インストール作業前に、ちょっと過去バージョンmysqlインストール作業練習を
ごちょごちょやっていたので、その時の設定ファイルが残っていたようでした

という事で、先に設定ファイル作成から行います

設定ファイル作成

ソース側からコピー配置。
mysqlはデフォルトでは、/etc/my.cnfの設定ファイルを見るらしい

cp /usr/local/src/mysql-5.5.10/support-files/my-medium.cnf /etc/my.cnf


設定ファイル配置後、再度データベース初期化コマンド実行したら
今度はエラー無く成功しました

4.MySQLのグループとユーザーの作成、所有者変更

最初にやった方が良いのかな、とりあえず作成

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

useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

ユーザー作成でエラー発生、ホームディレクトリ既に存在するよってエラー

cat /etc/passwd  |grep mysql
mysql:x:502:502::/usr/local/mysql:/bin/bash

一応ユーザー作成されているようなのでスルー
ユーザー作成は初めに行ったほうが良いかも

所有者変更

chown -R mysql:mysql /usr/local/mysql

5.起動スクリプト作成

cp support-files/mysql.server /etc/init.d/mysql

パスを設定

vi /etc/init.d/mysql
 
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

実行権限付与

chmod 755 /etc/init.d/mysql 

mysqlコマンド実行しやすいようシンボリックリンク貼ります

ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql


起動確認

service mysql start
Starting MySQL. SUCCESS!

ps ax|grep mysql

mysql
mysql> show databases;                                                                
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
mysql> exit

service mysql stop
Shutting down MySQL. SUCCESS! 

正常に起動・停止出来ました

6.自動起動設定
chkconfig --add mysql
chkconfig --list | grep mysql
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off


以上でmysql5.5のインストールと初期起動設定が完了です。

実はインストール作業はすんなりいかず1度失敗しました。
失敗原因はコンパイラをcmakeで無くconfigurateで行ったからだと思います。
(詳細不明ですが)
mysqlホームディレクトリとか起動スクリプト等
インストール作業で作成したものを全て削除して上記手順で再度インストールし直しました。
失敗も含めてトータル4時間位(3日で分けて)掛かりました。。。

とりあえず完了です。