はじめに
前回に続き、EC2のLaravel環境にMySQLを入れてみましょう。
前回の記事を参考に、EC2インスタンスにblogというLaravel6.0のアプリケーションを構築済みの状態を前提とします。
AWS EC2でLaravel6.0を入れる手順 AWS/Laravel連載(2)
MySQL入れる
以下記事を参考に、MySQL5.7を入れます。
今回は
新しいユーザーを作成する。
の手前まで実行しましょう。パスワードは一旦hogehogeとかに設定しておきます(本番環境では、こんな安易なパスワード設定しないように!)。
AWS Amazon Linux2にMySQL5.7を構築する
データベースとユーザーを作成
今回はblogという名前のdatabase、laravelというユーザーをmysqlに追加します。
$ mysql -u root -p
mysql> create database blog;
mysql> show databases;
ここではhogehogeというパスワードを設定していますが、デフォルトだと簡単すぎて弾かれます。
上記記事の中でパスワードの長さやポリシーを下げる設定を実行すればいけます。
が、繰り返しになりますが本番環境では、こんな安易なパスワード設定しないように。
今回も、hogehogeにせず、条件を満たす難しいパスワードを設定すれば問題ありません。
mysql> create user 'laravel'@'%' identified by 'hogehoge';
mysql> GRANT ALL ON blog.* TO 'laravel'@'%';
mysql> ¥q
laravelユーザーでblogに入れるか試します。
$ mysql -u laravel -D blog -p
パスワード入れて
mysql>
入れればOK。
LaravelからMySQLに接続
$ 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ファイルが入っています。
$ php artisan migrate
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への接続及び実行が成功していますが、念の為見てみましょう。
$ mysql -u laravel -D blog -p
mysql> show tables;
+-----------------+
| Tables_in_blog |
+-----------------+
| migrations |
| password_resets |
| users |
+-----------------+
3 rows in set (0.00 sec)
tinkerを使ってユーザーを新しく作ってみましょう。
$ php artisan tinker
>>> 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,
}
ユーザーができたので取得してみます。
>>> $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でも取得してみましょう。
$ mysql -u laravel -D blog -p
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のデフォルトホーム画面右上にログイン機能が追加されています。
php artisan make:auth
Laravel6.0での対応は連載5回目で~~やります。~~やりました。