CentOS6 or 7にMySQL5.6 or 5.7のインストール

# 概要
yumでインストール

## MySQL5.6
### CentOS6系の場合

```
$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
$ sudo yum -y install mysql mysql-devel mysql-server mysql-utilities
$ sudo rpm -qa | grep mysql
$ sudo mysql --version
```

### CentOS7系の場合

```
$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
$ sudo yum -y install mysql mysql-devel mysql-server mysql-utilities
$ sudo rpm -qa | grep mysql
$ sudo mysql --version
```

## MySQL5.7
### CentOS6系の場合

```
$ sudo yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm
$ sudo yum -y install mysql mysql-devel mysql-server mysql-utilities
```


### CentOS7系の場合

```
$ sudo yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
$ sudo yum -y install mysql mysql-devel mysql-server mysql-utilities
```

repoが追加されているか確認

```
$ sudo yum repolist
```

## 起動と自動起動設定

### CentOS6系の場合


```
$ sudo chkconfig mysqld on
$ sudo /etc/init.d/mysqld start
```

### CentOS7系の場合

```
$ sudo systemctl enable mysqld
$ sudo systemctl start mysqld
```


### 補足
新しいレポジトリを読みに行ってくれない場合は下記コマンドでキャッシュを削除してみてください。

```
$ sudo yum clean all
```

## mysqlユーザー作成方法メモ
### デフォルトのrootのパスワード
MySQL5.7.6以降の場合は、初回は下記に書かれているrootのパスワードを使う。
/var/log/mysqld.logにデフォルトのrootのパスワードが書いてあるので、初回はそれを使う。

```
$ sudo head /var/log/mysqld.log
*snip*
[Note] A temporary password is generated for root@localhost: xxxx
```

### rootのパスワード設定

- mysql_secure_installationで設定

```
$ mysql_secure_installation



NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

# 現在のmysqlのrootパスワードを入力、初回は空でエンター
Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

# rootパスワードを設定しますか？
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

# 匿名ユーザーを削除しますか？
Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

# リモートでのrootログインを拒否しますか？
Disallow root login remotely? [Y/n] y
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

# テスト用データベースを削除しますか？
Remove test database and access to it? [Y/n] y
 - Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
 ... Failed!  Not critical, keep moving...
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

#  今すぐFLUSH PRIVILEGESしますか？
Reload privilege tables now? [Y/n] y
 ... Success!




All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!


Cleaning up...
```

- sql文で設定

```
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass'); 
```

### 一般ユーザー

- 一般ユーザー作成

```
CREATE USER myuser@'localhost' IDENTIFIED BY  'MyNewPass';
```

- 権限設定

```
GRANT ALL ON DBName.* TO user@'localhost';
GRANT ALL ON DBName.* TO user@'%' IDENTIFIED BY 'password';
```

## mysql5.7
こんな記事を見つけたのでとりあえずメモ
[MySQL5.7のvalidate_passwordとかいうクソ機能殺す](http://thr3a.hatenablog.com/entry/20160229/1456727388)


## 文字コードの設定

### デフォルトの文字コード設定を確認
文字コード設定がデフォルトだとlatin1が混じっているため、utf8に設定する。

```
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
```

### /etc/my.cnfに下記を追記する

```lang:/etc/my.cnf
[client]
default-character-set=utf8

[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8 
```

#### 注意
下記の「誤」の記述方法は、MySQL5.6（5.5〜）から使用できなくなったので、「正」の記述で書く。

```lang:誤
[mysqld]
default-character-set=utf8
```

```lang:正
[mysqld]
character-set-server = utf8
```

### mysqld再起動

#### CentOS6

```
$ sudo /etc/init.d/mysqld restart
```


#### CentOS7

```
$ sudo systemctl restart mysqld
```

### 文字コード設定が変わったことを確認

```
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/ |
+--------------------------+----------------------------+
```

## mysql-clientだけインストールする
CentOS7.x

```console
$ sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ sudo yum install -y mysql-community-client
```

mac

```console
$ brew install mysql-client
```

ここにインストールされる

```console
$ ls -d /usr/local/opt/mysql-client
/usr/local/opt/mysql-client
$ ls /usr/local/opt/mysql-client/bin/mysql
/usr/local/opt/mysql-client/bin/mysql
```

## 参考
- [CentOS6にMySQL5.6をyumで簡単にインストールする手順](http://blog.ybbo.net/2014/01/22/%E3%80%90%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%80%91centos6%E3%81%ABmysql5-6%E3%82%92yum%E3%81%A7%E7%B0%A1%E5%8D%98%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/)
- [CentOS MySQL5.6 文字コード設定](http://www.webcyou.com/?p=4718)
- [MySQL の権限のコマンドまとめ。](http://qiita.com/PallCreaker/items/0b02c5f42be5d1a14adb)

## 関連記事
- [CentOSにPHP7をインストールする方法](http://qiita.com/Esfahan/items/e55fa83a9dcf91d89d84)