Cloud n にオールインワンサーバを立てる 9
MySQL 5.6 のインストール。
MySQL のインストール
1. MySQL リポジトリの設定
Oracle のページから最新版を DL する。
Cent OS 6.5 用は「Red Hat Enterprise Linux 6 / Oracle Linux 6」と書かれてあるところから。
ちなみに、リンクに「MD5: 1cbcf6b4ae7592b9ac100d9e7cd2ceb4」と書かれてあるので、ダウンロードした後に比較してみると、正しく落とせたかどうか分かる。
# cd /tmp # wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm # md5sum mysql-community-release-el6-5.noarch.rpm 1cbcf6b4ae7592b9ac100d9e7cd2ceb4 mysql-community-release-el6-5.noarch.rpm # rpm -ivh mysql-community-release-el6-5.noarch.rpm # vi /etc/yum.repos.d/mysql-community.repo ---------- [mysql56-community] enabled=1 ※ 1 になっていれば OK。特に設定は不要だった
2. MySQL 5.6 インストール
# yum list | grep mysql56 mysql-community-bench.x86_64 5.6.22-2.el6 mysql56-community mysql-community-client.i686 5.6.22-2.el6 mysql56-community mysql-community-client.x86_64 5.6.22-2.el6 mysql56-community mysql-community-common.i686 5.6.22-2.el6 mysql56-community mysql-community-common.x86_64 5.6.22-2.el6 mysql56-community mysql-community-devel.i686 5.6.22-2.el6 mysql56-community mysql-community-devel.x86_64 5.6.22-2.el6 mysql56-community mysql-community-embedded.i686 5.6.22-2.el6 mysql56-community mysql-community-embedded.x86_64 5.6.22-2.el6 mysql56-community mysql-community-embedded-devel.i686 5.6.22-2.el6 mysql56-community mysql-community-embedded-devel.x86_64 5.6.22-2.el6 mysql56-community mysql-community-libs.i686 5.6.22-2.el6 mysql56-community mysql-community-libs.x86_64 5.6.22-2.el6 mysql56-community mysql-community-libs-compat.i686 5.6.22-2.el6 mysql56-community mysql-community-libs-compat.x86_64 5.6.22-2.el6 mysql56-community mysql-community-server.x86_64 5.6.22-2.el6 mysql56-community mysql-community-test.x86_64 5.6.22-2.el6 mysql56-community ※ リポジトリが mysql56-community の中に、目的の MySQL 5.6 がある。 # yum -y install mysql-community-client \ mysql-community-common \ mysql-community-devel \ mysql-community-libs \ mysql-community-libs-compat \ mysql-community-server warning: rpmts_HdrFromFdno: V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Retrieving key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Importing GPG key 0x5072E1F5: Userid : MySQL Release EngineeringPackage: mysql-community-release-el6-5.noarch (installed) From : file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Is this ok [y/N]: y ※ y で GPG キーをインポートしておく # service mysqld start (略) [ OK ] Starting mysqld: [ OK ] ※ 長い警告が出たが、起動する # chkconfig mysqld on
PHP 5.6 は /opt/remi/php56 配下にインストール (次の記事) されるが、 MySQL 5.6 は / 配下にインストールされる。
インストール先のファイル・ディレクトリ | 簡単な説明 |
---|---|
/etc/my.cnf | 設定ファイル |
/usr/bin/mysql | MySQL サーバへの接続コマンド |
/usr/bin/mysqladmin | MySQL サーバの状態確認、パスワード変更するコマンド |
/var/lib/mysql/ | データベースファイル置き場 |
ライブラリ | /usr/lib64/mysql/ |
ヘッダファイル | /usr/include/mysql/ |
3. MySQL ユーザ設定
# mysql -u root ※ 最初だからパスワードなしで入れる
- mysql> select user,password,host from mysql.user;
- +------+----------+-----------+
- | user | password | host |
- +------+----------+-----------+
- | root | | localhost |
- | root | | penguin1 |
- | root | | 127.0.0.1 |
- | root | | ::1 |
- | | | localhost |
- | | | penguin1 |
- +------+----------+-----------+
- 6 rows in set (0.08 sec)
- ※ インターネット側からは penguin1 のホストには接続できない設定にするが、外部に公開するわけではないので、これで OK だと思う。
- ※ IPv6 は使わないので root@"::1" は削除してもいいと思うが、一応残した。
- mysql> set password for root@localhost=password('パスワード');
- mysql> set password for root@penguin1=password('パスワード');
- mysql> set password for root@127.0.0.1=password('パスワード');
- mysql> set password for root@'::1'=password('パスワード');
- ※ パスワードが空になっているユーザを削除する。
- mysql> delete from mysql.user where user='' and password='';
- ※ すべてのユーザにパスワードが設定されていることを確認する。
- mysql> select user,password,host from mysql.user;
- +------+-------------------------------------------+-----------+
- | user | password | host |
- +------+-------------------------------------------+-----------+
- | root | *0B025000DCF68B1D374153A7005639E320D41D5B | localhost |
- | root | *0B025000DCF68B1D374153A7005639E320D41D5B | penguin1 |
- | root | *0B025000DCF68B1D374153A7005639E320D41D5B | 127.0.0.1 |
- | root | *0B025000DCF68B1D374153A7005639E320D41D5B | ::1 |
- +------+-------------------------------------------+-----------+
- 4 rows in set (0.00 sec)
上記の設定を行うと root にパスワードがかかるので、次回から -p オプションをつける。
※ 試しに -p なしだとパスワードが必要と怒られる # mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # mysql -u root -p Enter password: ※ 設定したパスワードを入力 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.6.22 MySQL Community Server (GPL) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
4. my.cnf 設定 – UTF-8
MySQL の文字コードを UTF-8 にしておく。
# vi /etc/my.cnf ------------------------------ 項目追加 [mysqld] ※ この項目の下あたりに追加しておく # UTF-8 character-set-server = utf8 ------------------------------
- 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 |
- | character_sets_dir | /usr/share/mysql/charsets/ |
- +--------------------------+----------------------------+
- 8 rows in set (0.01 sec)
※ character_set_database や character_set_server が utf8 になっていれば OK。
5. my.cnf 設定 – explicit_defaults_for_timestamp
MySQL を起動したときの警告の対処をする。
MySQL database: 2014-12-22 11:41:21 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
mysql を起動するたび、 /var/log/mysqld.log にも警告が書き込まれるため、ログが鬱陶しくなる。
MySQL 5.6 から explicit_defaults_for_timestamp の設定をすることが推奨されるようだ。
# vi /etc/my.cnf ------------------------------ 項目追加 [mysqld] explicit_defaults_for_timestamp = true
- mysql> show global variables like 'explicit_defaults_for_timestamp';
- +---------------------------------+-------+
- | Variable_name | Value |
- +---------------------------------+-------+
- | explicit_defaults_for_timestamp | ON |
- +---------------------------------+-------+
- 1 row in set (0.00 sec)
※ 明示的に ON にして、警告は表示されなくなった。
create table した時の挙動が若干変わるが、今のところ table 追加したりすることはないし、するとしたら新しいツールを入れるときだろうから、不具合が出てから考えよう。