Linux(CentOS7)でWebサーバーを構築する。 -MySQL導入編-

# 概要
前回の[-php導入編-](http://qiita.com/sango/items/a08c5b04df7125aaaad3)に引き続き、今回はMySQLを使えるようにする方法を綴ります。

今回も導入までは短いですが、設定とか含めるとちょっと長くなりそうです。 ('ω';)

※MySQL(データベース)を使用しない場合は導入不要です。
※運用中に試行錯誤しながら記載しているので記事の内容がちょこちょこ変動するかも知れません；

# 導入するもの

- MySQL

# 手順

## 1. MySQLの導入

`# yum -y install mariadb-server`
導入は今まで同様にこれだけ。

とっても簡単ね！

え。なんで名前が mariadb かって？
はて…？

## 2. 動作確認
### MySQLサーバーを起動
`# systemctl start mariadb.service`
起動！

### MySQLにログインしてみる
`# mysql -u root`
MySQLにrootとしてログイン！

`MariaDB [(none)]>`
こんな感じになったら成功！

とりあえず導入フェイズはここまでで完了！

MySQLを終了する場合は、 `\q` を入力してEnter.(ｯﾀｰﾝ!)

# 設定など
運用にあたり、設定しておいた方が良さそうなものをピックアップしておくよ！

## 文字コードの設定
日本語とか色々柔軟に扱えるように文字コードをUTF-8に設定するよ！

`# vim /etc/my.cnf`
vimでMySQLの設定ファイルを開いてね！

`[mysqld]` の項目に、
`character-set-server = utf8` を追加してね！

こんな感じ。

```cnf:my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server = utf8

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

!includedir /etc/my.cnf.d
```

編集が終わったら保存&終了！
`:wq`

## ルートパスワードの設定
初期状態だとMySQLにパスワードなしでルートログイン出来てしまうので、パスワードを設定するよ。

まずはMySQLにログイン。
`# mysql -u root`

既存のユーザーリストを確認。
`MariaDB [(none)]> SELECT host,user,password FROM mysql.user;`

複数のレコードが表示されたかな？

```
+------------------+---------------+------------------------+
| host             | user          | password               |
+------------------+---------------+------------------------+
| loalhost         | root          |                        | # パスワード未設定のルートユーザー(1)
+------------------+---------------+------------------------+
| 999.999.999.999  | root          |                        | # パスワード未設定のルートユーザー(2)
+------------------+---------------+------------------------+
| 127.0.0.1        | root          |                        | # パスワード未設定のルートユーザー(3)
+------------------+---------------+------------------------+
| localhost        |               |                        | # 匿名ユーザー
+------------------+---------------+------------------------+
```
↑ここから、

- パスワード未設定のルートユーザーにはパスワードの設定
- 匿名ユーザーはユーザーの削除

を行うよ！
<br>

パスワード未設定のルートユーザー(1)のパスワードを設定
`SET PASSWORD FOR root@localhost=PASSWORD('任意のパスワード文字列');`

パスワード未設定のルートユーザー(2)のパスワードを設定
`SET PASSWORD FOR root@'999.999.999.999'=PASSWORD('任意のパスワード文字列');`

パスワード未設定のルートユーザー(3)のパスワードを設定
`SET PASSWORD FOR root@'127.0.0.1'=PASSWORD('任意のパスワード文字列');`

匿名ユーザーの削除
`DELETE FROM mysql.user WHERE user="";`

<br>
ここまでできたらもう一度ユーザーリストを確認してみよう！
`MariaDB [(none)]> SELECT host,user,password FROM mysql.user;`

こんな感じの結果が出たかな？

```
+------------------+---------------+------------------------+
| host             | user          | password               |
+------------------+---------------+------------------------+
| loalhost         | root          | *ABCDEFGHIJKLMNOPQRSTU |
+------------------+---------------+------------------------+
| 999.999.999.999  | root          | *ABCDEFGHIJKLMNOPQRSTU |
+------------------+---------------+------------------------+
| 127.0.0.1        | root          | *ABCDEFGHIJKLMNOPQRSTU |
+------------------+---------------+------------------------+
```

userが空のレコードが消えて、
userがrootのpasswordが空じゃなくなっていたら成功だよ！

一旦MySQLを終了させてね。
`MariaDB [(none)]> \q`

もう一度ログインするよ！
`# mysql -u root`

こんなエラーが表示されたかな？
`ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)`

このエラーが出たら、パスワードがきちんと設定されているよ！

次からはMySQLにログインする場合は、
`# mysql -u root -p`
このコマンドを使おう！

`Enter password:`
パスワードの入力を求められるので、さっき設定したパスワードを入力してEnter！

`MariaDB [(none)]>`
ちゃんとログインできたかな？？

<br>
今回はだいぶ長くなっちゃいましたね…。
お疲れ様でした！ ('-'*)