以前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
として,パスワード入力が求められるので,入力してログインできれば完了.