読者です 読者をやめる 読者になる 読者になる

woshidan's blog

そんなことよりコードにダイブ。

CentOSにMySQLをインストール

半月前に書きます!と宣言していたサーバ設定作業記録の続きです。

前記事(http://woshidan.hatenablog.com/entry/2014/12/13/191144)までで基本的なサーバの設定は終わったので、

次にDBMSMySQLのインストール作業について。

主に

#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でのyumrubyでいう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のバージョン更新

mysqlyumリポジトリをいれずにCentOSを立ち上げた状態からyum updateしただけではmysqlのバージョンが5.1.73のままです。このままでは古すぎて悲しいので、作業に先立って、


CentOSのMySQLを5.5から5.6にアップデートする | karakaram-blog

を見て5.6に更新することをお勧めします。