EC2のLaravel環境にMySQLを入れる　AWS/Laravel6.0連載(3)

# はじめに

前回に続き、EC2のLaravel環境にMySQLを入れてみましょう。

前回の記事を参考に、EC2インスタンスにblogというLaravel6.0のアプリケーションを構築済みの状態を前提とします。
[AWS EC2でLaravel6.0を入れる手順　AWS/Laravel連載(2)](https://qiita.com/rf_p/items/5e40a387117963fcf22f)

# MySQL入れる

以下記事を参考に、MySQL5.7を入れます。
今回は

>新しいユーザーを作成する。

の手前まで実行しましょう。パスワードは一旦hogehogeとかに設定しておきます（本番環境では、こんな安易なパスワード設定しないように！）。

[AWS Amazon Linux2にMySQL5.7を構築する](https://qiita.com/himatani/items/e1e650992dbc12b8a9b3)

# データベースとユーザーを作成

今回はblogという名前のdatabase、laravelというユーザーをmysqlに追加します。

```powershell
$ mysql -u root -p
```

```sql
mysql> create database blog;
mysql> show databases;
```

ここではhogehogeというパスワードを設定していますが、デフォルトだと簡単すぎて弾かれます。
上記記事の中でパスワードの長さやポリシーを下げる設定を実行すればいけます。
が、繰り返しになりますが本番環境では、こんな安易なパスワード設定しないように。
今回も、hogehogeにせず、条件を満たす難しいパスワードを設定すれば問題ありません。

```sql
mysql> create user 'laravel'@'%' identified by 'hogehoge';
mysql> GRANT ALL ON blog.* TO 'laravel'@'%'; 
mysql> ¥q
```

laravelユーザーでblogに入れるか試します。

```powershell
$ mysql -u laravel -D blog -p
```

パスワード入れて

```sql
mysql>
```

入れればOK。

# LaravelからMySQLに接続

```powershell
$ cd /var/www/blog
$ vi .env
```

.envのDB定義部分を以下の通りに修正し、保存して閉じます。

```
...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=laravel
DB_PASSWORD=hogehoge
...
```

保存したらmigrateを実行しましょう。
Laravelでは最初からusersテーブルのmigrationファイルが入っています。

```powershell
$ php artisan migrate
```

```powershell
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.02 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.02 seconds)
```

successfullyが出ていればLaravelからMySQLへの接続及び実行が成功していますが、念の為見てみましょう。

```powershell
$ mysql -u laravel -D blog -p
```

```
mysql> show tables;
+-----------------+
| Tables_in_blog  |
+-----------------+
| migrations      |
| password_resets |
| users           |
+-----------------+
3 rows in set (0.00 sec)
```

tinkerを使ってユーザーを新しく作ってみましょう。

```powershell
$ php artisan tinker
```

```php
>>> User::create(['name' => 'test', 'email' => 'test@example.com', 'password' => 'hogehoge']);
[!] Aliasing 'User' to 'App\User' for this Tinker session.
=> App\User {#2962
     name: "test",
     email: "test@example.com",
     updated_at: "2019-08-31 14:07:35",
     created_at: "2019-08-31 14:07:35",
     id: 1,
   }
```

ユーザーができたので取得してみます。

```php
>>> $user = User::find(1);
=> App\User {#2953
     id: 1,
     name: "test",
     email: "test@example.com",
     email_verified_at: null,
     created_at: "2019-08-31 14:07:35",
     updated_at: "2019-08-31 14:07:35",
   }
```

せっかくなのでMySQLでも取得してみましょう。

```powershell
$ mysql -u laravel -D blog -p
```

```sql
mysql> select * from users where id = 1;
+----+------+------------------+-------------------+----------+----------------+---------------------+---------------------+
| id | name | email            | email_verified_at | password | remember_token | created_at          | updated_at          |
+----+------+------------------+-------------------+----------+----------------+---------------------+---------------------+
|  1 | test | test@example.com | NULL              | hogehoge | NULL           | 2019-08-31 14:07:35 | 2019-08-31 14:07:35 |
+----+------+------------------+-------------------+----------+----------------+---------------------+---------------------+
1 row in set (0.00 sec)
```

これで、EC2インスタンスにMySQLを入れて動かすことができました。

# ログイン機能を実装する

Laravel5系までは以下コマンドで作れましたが、6.0系はcomposerで入れる必要があります。
このコマンドを実行するだけで、Laravelのデフォルトホーム画面右上にログイン機能が追加されています。

```powershell
php artisan make:auth
```

Laravel6.0での対応は連載5回目で~~やります。~~やりました。

[EC2のLaravel6.0環境にauth(認証機能)を入れる　AWS/Laravel連載(5)](https://qiita.com/rf_p/items/d4c0eb4e21fb92618cf6)