CentOSにMySQLをインストール
半月前に書きます!と宣言していたサーバ設定作業記録の続きです。
前記事(http://woshidan.hatenablog.com/entry/2014/12/13/191144)までで基本的なサーバの設定は終わったので、
主に
#16 MySQLの設定をしよう | さくらのVPS入門 - プログラミングならドットインストール
を参考にして行いました。
内容
- yumとは
- MySQLのインストールコマンド
- -develとは?
- 設定ファイル
- my.cnfの中身
- 各プロセスについて
- mysqld
- mysql
- mysqld_safe
- client
- 設定の反映方法
- 自動起動の設定
- MySQLのバージョン更新(追記)
yumとは
よく分かっていなかったのでメモ。
http://www.searchman.info/fedoracore4/sev1050.html
Yellow dog Updater,Modifiedの略らしいです。
Linux系OSでのyumはrubyでいうbundlerみたいなもので、
Linux系OSがサーバとして動作するために必要なソフトウェアを、他のソフトの間との依存関係等を含めたパッケージという単位で取得しインストール・アップグレード・検索・管理を行うコマンドです。
当時はyum install とか書いている間はrailsのプロジェクトじゃなくてCentOSに入れてるんだな、という認識で進めていました。
MySQLのインストールコマンド
yum install mysql-server
# mysqlのインストール
yum install mysql-devel
# RailsでMySQLを使うために必要なgemを使うために必要なパッケージ。
mysql-develをいれないがために起こる、この辺のエラーコマンドについては
Railsのインストールの記事に書きます。
-develとは?
-develというのは、
developmentの略。
主に開発に関連したものが入っているパッケージ
開発用のツールだったり、コンポーネントだったり。
動的な仕組み(機能がモジュール化されているもの)を使うソフトウェアの場合は、通常の使用でも必要になることもある
と教えて!goo(http://oshiete.goo.ne.jp/qa/3020960.html)で読んだのだけど本当ですか。
設定ファイル
MySQLの設定ファイルは、/etc/my.cnfです。
もっと詳しいこと知りたい人は、
http://dev.mysql.com/doc/refman/5.7/en/option-files.htmlとか、
http://time-complexity.blogspot.jp/2013/10/mysqlmycnf.html
とか見ればいいと思います。
my.cnfの中身
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
# 他のコマンドと微妙に設定名が異なるので注意
[mysql]
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# mysql-develをインストールした後に設定。
[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
各コマンドについて補足
上記の中でmy.cnf中のは大体client以外名のコマンドに対する設定を書きます、という意味になっています。各コマンドについて補足しておきます。
mysqld
MySQLのメインプログラムであるmysqldに関する設定
データベースやログ、システムファイルが置いてあるディレクトリへのアクセスを管理したり、
MySQLを起動させるときにmysqld startと打ち込んだりします。
datadir=/var/lib/mysql
ここは、データベースやログ、システムファイルが置いてあるディレクトリの位置かと。
socket=/var/lib/mysql/mysql.sock
クライアントからのリクエストを待つためのソケットの位置。
/var/lib/mysql/mysql.sockはmysqldを起動したら自動的に生成されるらしい。
http://www.vpswordpress-admindocs.com/wp/trouble/mysql-08
なお、MacOSの場合(今回はCentOSですが)は環境によって生成場所が異なるので注意。
https://dev.mysql.com/doc/refman/5.5/en/macosx-installation-notes.html
mysql
http://stackoverflow.com/questions/22132780/difference-between-mysql-mysqladmin-mysqld
対話的にSQLを送ったりするコマンドラインインタフェースのクライアント。
mysqld_safe
mysqld_safeはmysqldを監視しているプロセス。
mysqld startと打ち込んだとき、実はmysqld_safeの中からmysqldを起動していて、
エラーが起きた場合にログを吐いたり、異常終了したときに再起動したりする
http://open-groove.net/mysql/mysqld-mysqldsafe/
http://dev.mysql.com/doc/refman/5.5/en/mysqld.html
client
mysqldじゃなくて、クライアントプログラム(Railsとかですね)からMySQLのデータベースを利用しようとした時に読み込まれる設定。
Railsのインストール時にmysql(ないしmysql2)をいれようとして
'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
と表示された時は、クライアントプログラム全部が読む設定ファイルのmy.cnfの[client]に
socket=/var/lib/mysql/mysql.sock
を追加する(http://easyramble.com/warnings-for-changing-mysql-socket.html)か、
Railsのdatabase.ymlに
socket: var/lib/mysql/mysql.sock
のように追加する(http://stackoverflow.com/questions/5499035/ruby-on-rails-3-cant-connect-to-local-mysql-server-through-socket-tmp-mysql-s)。
設定の反映方法
MySQLを再起動すると反映されます。
sudo service mysqld restart
自動起動の設定
chkconfigコマンドを使って、mysqldが自動起動するように設定しておきます。
sudo chkconfig mysqld on
[2015/1/2追記 ]
MySQLのバージョン更新
mysqlのyumリポジトリをいれずにCentOSを立ち上げた状態からyum updateしただけではmysqlのバージョンが5.1.73のままです。このままでは古すぎて悲しいので、作業に先立って、
CentOSのMySQLを5.5から5.6にアップデートする | karakaram-blog
を見て5.6に更新することをお勧めします。