VMWare Fusionで遊んでみる(MySQLソースインストール編)
今まではCentOSがメインで仮想OSを作ることが多かったんですが、現在はUbuntuの流れっぽいので、慣れてないのになれるべくUbuntuの最新バージョンを入れてみる。
- VMWare Fusion上にUbuntu 12.04 LTSをインストールする
- apache2のパッケージインストール
- MySQL5.5.24のインストール
- 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>
無事インストール完了です。お疲れさまでした。