[PR] あなたが Kindle で読みたいその本、Kindle に対応したら Twitter でお知らせします。

CentOS 6.4 に MySQL 5.6 をサクッとインストールする

Posted on

お知らせ: CentOS 6.5 でも同じ手順でインストールできることを確認済みです。

CentOS の標準リポジトリからインストールできる MySQL は未だに 5.1 系です。 5.5 以降の圧倒的な速さを知っているので、今さら 5.1 は使う気になりません。

というわけで、CentOS 6.4 に RPM パッケージからインストールする手順です。 4/29 時点の最新バージョンは MySQL 5.6.11 です。バージョンはその時の最新に読み替えてください。

まずは RPM ファイルをダウンロードします。

wget -q http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.11-1.el6.x86_64.rpm \
http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.11-1.el6.x86_64.rpm \
http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.11-1.el6.x86_64.rpm \
http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.11-1.el6.x86_64.rpm \
http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.11-1.el6.x86_64.rpm

各パッケージの説明は公式サイトを参照してください。

CentOS 6.4 にはデフォルトで 5.1 系の mysql-libs がインストールされており、mysql-libs に依存しているパッケージがいくつかあります。先ほどダウンロードした MySQL-shared をインストールしようとすると依存性のチェックで怒られるので、2 回のステップを踏んでインストールします。

先に MySQL-client, MySQL-devel, MySQL-server, MySQL-shared-compat をインストールします。 MySQL-shared-compat は今の環境の依存性を壊すことなく共有ライブラリを置き換えてくれます。

$ sudo yum install MySQL-{client,devel,server,shared-compat}-5.6.11-1.el6.x86_64.rpm
...
====================================================================================================
 Package                Arch      Version         Repository                                   Size
====================================================================================================
Installing:
 MySQL-client           x86_64    5.6.11-1.el6    /MySQL-client-5.6.11-1.el6.x86_64            81 M
 MySQL-devel            x86_64    5.6.11-1.el6    /MySQL-devel-5.6.11-1.el6.x86_64             19 M
 MySQL-server           x86_64    5.6.11-1.el6    /MySQL-server-5.6.11-1.el6.x86_64           233 M
 MySQL-shared-compat    x86_64    5.6.11-1.el6    /MySQL-shared-compat-5.6.11-1.el6.x86_64     11 M
     replacing  mysql-libs.x86_64 5.1.67-1.el6_3

Transaction Summary
====================================================================================================
Install       4 Package(s)

次に MySQL-shared をインストールします。先に MySQL-shared-compat をインストールしたので依存関係でエラーが出ることもありません。

$ sudo yum install MySQL-shared-5.6.11-1.el6.x86_64.rpm
...
====================================================================================================
 Package            Arch         Version              Repository                               Size
====================================================================================================
Installing:
 MySQL-shared       x86_64       5.6.11-1.el6         /MySQL-shared-5.6.11-1.el6.x86_64       8.4 M

Transaction Summary
====================================================================================================
Install       1 Package(s)

これでインストールは完了です。 /var/log/yum.log を確認すると、mysql-libs がアンインストールされていることが分かります。

$ sudo tail /var/log/yum.log
Apr 29 05:13:10 Installed: MySQL-client-5.6.11-1.el6.x86_64
Apr 29 05:13:44 Installed: MySQL-server-5.6.11-1.el6.x86_64
Apr 29 05:13:45 Installed: MySQL-devel-5.6.11-1.el6.x86_64
Apr 29 05:13:48 Installed: MySQL-shared-compat-5.6.11-1.el6.x86_64
Apr 29 05:13:48 Erased: mysql-libs
Apr 29 05:14:38 Installed: MySQL-shared-5.6.11-1.el6.x86_64

初期設定

5.6 からインストール後の手順が少し変わりました。まず MySQL サーバを立ち上げます。

$ sudo service mysql start
Starting MySQL. SUCCESS!

5.5 までは自分で root ユーザーのパスワードを設定していましたが、セキュリティを考慮したのか 5.6 では自動的に決められます。初期パスワードは /root/.mysql_secret に書かれています。

初期パスワードを使ってログインし、root ユーザーのパスワードを変更します。初期パスワードのままだと何の操作もできません。

$ mysql -uroot -p
mysql> SET PASSWORD FOR root@localhost=PASSWORD('xxxxxxxx');

次に mysql_secure_installation コマンドを実行します。これは以前と同じです。質問項目だけ抜き出すと以下の 5 つを聞かれます。

# root ユーザーのパスワードを変更するか?
Change the root password? [Y/n] n

# 匿名ユーザーを削除するか?
Remove anonymous users? [Y/n] Y

# リモートから root ユーザーのログインを禁止するか?
Disallow root login remotely? [Y/n] Y

# test データベースを削除するか?
Remove test database and access to it? [Y/n] Y

# 権限テーブルをリロードするか?
Reload privilege tables now? [Y/n] Y

これで初期設定も完了です。あとは my.cnf の設定を行ってください。

MySQL のインストール方法が進化していた!」を参考にさせていただきました。