VMWare Fusionで遊んでみる(MySQLソースインストール編)

2012.07.04

今まではCentOSがメインで仮想OSを作ることが多かったんですが、現在はUbuntuの流れっぽいので、慣れてないのになれるべくUbuntuの最新バージョンを入れてみる。

  1. VMWare Fusion上にUbuntu 12.04 LTSをインストールする
  2. apache2のパッケージインストール
  3. MySQL5.5.24のインストール
  4. MySQLのmy.cnfの設定

まずはUbuntu 12.04 LTSのisoファイルをダウンロードします。その後、VMWare Fusionの仮想マシンライブラリを立ち上げて新規作成をクリックしてUbuntu12.04の仮想OSをインストールします。

無事仮想OSのインストールが終わったらまずはubuntuのアップデートがあるので、それを先に処理してしまいましょう。

では仮想のubuntuを起動して、早速Apache2からインストールします。

$ sudo apt-get install apache2

まずはMySQLのソースダウンロードから

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.24.tar.gz/from/http://mysql.ntu.edu.tw/

ダウンロードのファイル名がindex.htmlになっていたらのでリネームしました。

$ mv index.html mysql-5.5.24.tar.gz
$ tar xvfz mysql-5.5.24.tar.gz

ソースからインストールするのでcmakeを入れます。

$ sudo apt-get install cmake
$ sudo groupadd mysql
$ sudo useradd -r -g mysql mysql
$ sudo cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=true -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all -DWITH_READLINE=ON

するとエラーが出ましたので、メッセージの通りCMakeCache.txtを削除して、libncurses5-devをいれます。

$ sudo rm -rf CMakeCache.txt
$ sudo apt-get install libncurses5-dev

再度cmakeを実行してみます。

が、またエラーです。。。 bisonがいるっぽい

$ sudo apt-get install bison

で、再度cmakeするが、またまたエラーが。。。

CMake Error at /usr/share/cmake-2.8/Modules/CMakeCXXInformation.cmake:37

もうあいかわらず面倒なんだから。。。

$ sudo apt-get install -y g++ libncursesw5-dev sysv-rc-conf

で依存パッケージを入れて再々度のcmakeでようやくエラーなく終了しました。 次はmakeです、、、エラーなくいくでしょうか。。。

$ sudo make

エラーなく完了♩ 次はソースからインストールする場合はpacoを入れておくと便利っぽいので入れておきます。

$ sudo apt-get install -y paco

これを入れておけば、下記のように普通にmakeインストールと同様の処理を行うことができます。

$ sudo paco -D make install

下記のようにコマンドをたたけば、アンインストールもできてしまうので便利。

$ sudo paco -r application_name

ではpacoを使ってインストール

$ sudo paco -D make install

Ubuntuなので

$ sudo sysv-rc-conf

で対話的に設定する。 次にディレクトリの所有権をmysqlユーザに設定する。

$ cd /usr/local/mysql/
$ sudo chown -R mysql .
$ sudo chgrp -R mysql .

binのシンボリックリンクを作成しておきます。

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

ログファイルの前準備をしておきます。

$ sudo mkdir /var/log/mysql/
$ sudo touch /var/log/mysql/error.log
$ sudo touch /var/log/mysql/query.log
$ sudo touch /var/log/mysql/slow.log
$ sudo chown -R mysql. /var/log/mysql/

ソケットディレクトリの所有者設定

$ sudo chown -R mysql:mysql /var/run/mysqld

confファイルを用意する。

$ cd /usr/local/mysql
$ sudo cp support-files/my-large.cnf /etc/my.cnf
$ sudo vi /etc/my.cnf

mysqlのサービスが自動で立ち上がるように設定しておく

$ sudo cp support-files/mysql.server /etc/init.d/mysql.server
$ sudo sysv-rc-conf mysql.server on 
$ sudo chkconfig --add mysql.server 
$ sudo chkconfig --list mysql.server
mysql.server              0:off  1:off  2:on   3:on   4:on   5:on   6:off
$ sudo vi /etc/profile

/etc/profileに下の行を追加してmysqlのbinのパスを通します。

export PATH="$PATH:/usr/local/mysql/bin"

ファイルを読み込んでPATHを有効化する。

$ source /etc/profile

MySQL初期化スクリプトを実行

$ sudo ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

ディレクトリの所有権を戻す

$ sudo chown -R root:root ./
$ sudo chown -R mysql:mysql ./data

起動してみましょう。

$ sudo bin/mysqld_safe --user=mysql &

別のターミナルを開いてmysqlを起動してみると、、、

$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

となってエラーになった。。。

どうやら

[mysqld]
socket = /var/run/mysqld/mysqld.sock

として設定ファイルに記述しているのですが、[client]側も同様に記述しておかないとだめっぽいです。もしかするとclient側はsocket=/tmp/mysql.sockを見ているのかもしれません。なので[client]側に対して明示的に以下の行を追加してみました。

$ sudo vi /etc/my.cnf
[client]
socket = /var/run/mysqld/mysqld.sock

を追加して再度、mysqlを起動してみる。

$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.24-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

無事起動できたようです。

では最後にrootにパスワードを設定しておきます

$ mysqladmin -u root password "任意のパスワード"

rootでログイン確認します。

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or ¥g.
Your MySQL connection id is 8
Server version: 5.5.12-log Source distribution
(省略)

匿名アカウントを削除しておきます。(mysqlには接続したままで)

mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='';
Query OK, 1 row affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

文字コードを確認しておきます。(mysqlには接続したままで)

mysql> show variables like "char%";
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

mysql>

無事インストール完了です。お疲れさまでした。