MySQLをソースからインストール

以前LAMP環境構築の記事を書いたと思うのだが,あのとき,MySQLをソースから入れることに失敗していた.

パッケージから入れても問題はないのだが,これだけパッケージというのも癪に障る.

そして,パッケージからインストールすると,どこに何が入っているのか自分で把握しきれなくなる.

設定ファイルすら,探すのに一苦労なので,今回はソースから入れ直してみた.

MySQLアンインストール

まずはパッケージで入っているMySQLをアンインストールする.

$ sudo apt-get remove --purge php5-mysql mysql-server*

■管理用のアカウントを作成する.

$ sudo groupadd -r mysql

しかし,すでにmysqlというアカウントが存在するといわれる.パッケージとはインストール先が変わってしまうことも考えられるので,アカウントを削除する.

$ sudo groupdel mysql

そしてもう一度作成

$ sudo groupadd -r mysql

$ sudo useradd -r -g mysql -d /usr/local/mysql -s /sbin/nologin mysql

PATHにインストール先「/usr/local/mysql/bin」を追加する.

MySQLインストール

公式ページからソースを落としてくる.

落としてきたソースファイルを適当なディレクトリに展開,そしてインストールする.

configureのオプション.

--prefix=/usr/local/mysql \

--with-charset=utf8 \

--with-extra-charsets=all \

--with-mysqld-user=mysql

そしてmake,make installすると,/usr/local/mysql/*/*にインストールされる.

■設定ファイルを設置する

$ sudo cp support-files/my-medium.cnf /etc/mysql/my.cnf

用途に応じてcnfファイルがいくつか用意されているので,好きなのを使ってください.

■initスクリプトを設置する

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

$ sudo chmod +x /etc/init.d/mysql.server

$ 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

とか表示されれば大丈夫.

ちなみに,俺のLinuxはUbuntu11.10を使っていました.initスクリプトの配置先が/etc/init.dとなっていますが,OSによっては/etc/rc.d/init/dを使う場合もあります.どっちでもいいんですけど,Ubuntuにはrc.dというのはないので.

■システムデータベース作成

$ sudo /usr/local/mysql/bin/mysql_install_db --user=mysql

ところがエラー発生.

FATAL ERROR: Could not find mysqld

The following directories were searched:

/usr/libexec

/usr/sbin

/usr/bin

If you compiled from source, you need to run 'make install' to

copy the software into the correct location ready for operation.

If you are using a binary release, you must either be at the top

level of the extracted archive, or pass the --basedir option

pointing to that location.

指示通り,--basedirを付け足してみる.

$ sudo /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql

Installing MySQL system tables...

100421 14:39:54 [ERROR] /usr/local/mysql/bin/mysqld: unknown option '--skip-bdb'

100421 14:39:54 [ERROR] Aborting

100421 14:39:54 [Warning] Forcing shutdown of 2 plugins

100421 14:39:54 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

Installation of system tables failed! Examine the logs in

/var/lib/mysql for more information.

You can try to start the mysqld daemon with:

shell> /usr/local/mysql/bin/mysqld --skip-grant &

and use the command line tool /usr/local/mysql/bin/mysql

to connect to the mysql database and look at the grant tables:

shell> /usr/local/mysql/bin/mysql -u root mysql

mysql> show tables

Try 'mysqld --help' if you have problems with paths. Using --log

gives you a log in /var/lib/mysql that may be helpful.

The latest information about MySQL is available on the web at

http://www.mysql.com/. Please consult the MySQL manual section

'Problems running mysql_install_db', and the manual section that

describes problems on your OS. Another information source are the

MySQL email archives available at http://lists.mysql.com/.

Please check all of the above before mailing us! And remember, if

you do mail us, you MUST use the /usr/local/mysql/scripts/mysqlbug script!

ダメだ.

原因は,mysql_install_db実行のときに,/etc/mysql/my.cnfを参照してしまうこと.

なので,一度/etc/mysql/my.cnfを削除してmysql_install_dbを実行する.

もしくは,mysql_install_dbを--no-defaultsオプションで実行する.

というわけでここは無事クリア.

インストール成功後,my.cnfをもとに戻して,動作確認をしてみる.

$ sudo service mysql.server start

Starting MySQL.The server quit without updating PID file

おかしいですね.

/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)

というエラーを吐いていました.mysql-bin.indexが見つからないみたい.

原因は,/usr/local/mysql以下のディレクトリの権限がrootになっていたことらしい.

mysql_install_dbで初期化をする前に,ディレクトリの権限をrootからmysqlに変更しておく必要がある.

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

として,もう一度mysql_install_dbを実行する.

というわけで,無事インストール成功.起動確認もできました.

あとは,管理用のアカウントにパスワードを設定します.

$ mysqladmin password -u root <パスワード>

そして,

$ mysql -u root -p

として,パスワード入力が求められるので,入力してログインできれば完了.

これで,ApachePHPMySQLと,すべてソースからインストールしてLAMP環境が整いました.