CentOS7.0にMySQL5.6をインストールしてみた。

VirtualBoxにCentOS7.0をインストールし、MySQLを使ってみる。CentOS7.0では、デフォルトでMariaDBというのが入っている。以前はMySQLだったが、CentOS7.0からMariaDBに変わったらしい。MySQL5.5からMySQL5.6とMariaDBに分岐したようだ。不勉強でMariaDBは使ったことがない。移行は容易らしいが、親しみのあるMySQL5.6の方にしてみた。

(1) MariaDBをアンインストールする。

MySQL5.6をインストールするためには、プリインストールされているMariaDBをremoveする必要がある。mariadb-libsが入っていたのでこれを削除した。


# yum list installed | grep maria
# yum -y remove mariadb-libs

(2) MySQL5.6を取得してきて、インストールする。


# yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
# yum info mysql-community-server
Available Packages
Name : mysql-community-server
Arch : x86_64
Version : 5.6.21
Release : 2.el6
Size : 53 M
Repo : mysql56-community

# yum -y install mysql-community-server
# mysqld --version
mysqld Ver 5.6.21 for Linux on x86_64 (MySQL Community Server (GPL))
# mysql -uroot
・・・
mysql>

yumを使って簡単にインストールできる。すぐに利用可能となる。自前のデータを投入したいので、character-setなどを変更したい。

(3) /etc/my.cnfを編集するとエラーになった。(character_set_serverに対応)

MySQL5.6の /etc/my.cnf を編集して、default-character-set=utf8 を追加したら、サービス起動でエラーになった。


# /etc/init.d/mysqld restart
Restarting mysqld (via systemctl): Job for mysqld.service failed.
See 'systemctl status mysqld.service' and 'journalctl -xn' for details. [失敗]
ステータスを見ろと言われる。

# systemctl status mysqld.service
mysqld.service - SYSV: MySQL database server.
Loaded: loaded (/etc/rc.d/init.d/mysqld)
Active: failed (Result: exit-code) since 2015-09-03 11:31:29 JST; 1min 50s ago

9月 03 11:31:26 systemd[1]: Starting SYSV: MySQL database server....
9月 03 11:31:29 mysqld[7104]: MySQL Daemon failed to start.
9月 03 11:31:29 mysqld[7104]: Starting mysqld: [失敗]
9月 03 11:31:29 systemd[1]: mysqld.service: control process exited,...=1
9月 03 11:31:29 systemd[1]: Failed to start SYSV: MySQL database se.....
9月 03 11:31:29 systemd[1]: Unit mysqld.service entered failed state.

# cd /var/log
# tail -200 mysqld.log
・・・
2015-09-03 11:31:26 7359 [Note] InnoDB: 5.6.26 started; log sequence number 1626077
2015-09-03 11:31:26 7359 [ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=utf8'
2015-09-03 11:31:26 7359 [ERROR] Aborting

default-character-set=utf8 を認識してくれない。ネット情報から「サーバー側は、MySQL5.5から表記が変わったようです。新しい書き方は、character_set_server=utf8 」というのを見つけた。私がインストールしたのは5.6だ。変数名のエイリアスが許可されなくなったようだ。character_set_server は見たことがある。mysqlコンソールで show variables をやった時に表示される変数名だ。

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 |
 +----------------------------------------+
ここでまた早まったことをやってしまった。[mysqld]では character_set_server だが、[client]や[mysql]では character_set_client=utf8 は受け付けてくれない。従来の default-character-set=utf8 のままで良かった。紛らわしい。ハイフンとアンスコの違いにも注意だ。最終的に、my.cnf は以下の感じに記述した。
[mysqld]
lower_case_table_names=1
character_set_server=utf8 # ここの記述を変更するだけ!
[mysql]
default-character-set=utf8 # ここは従来通り!
[mysqldump]
default-character-ser=utf8

再起動して、mysqlコンソールで確認してみる。

# /etc/init.d/mysqld restart
Restarting mysqld (via systemctl): [ OK ]
# mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.26 MySQL Community Server (GPL)
・・・
mysql> show variables like 'char%';
・・・
うまくいっている。サービスが自動で起動されるようにしておく。

# chkconfig --list mysqld
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig mysqld on
# chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off