LoginSignup
1
4

More than 3 years have passed since last update.

Laravel 5.8 MySQL 8.0 でログイン機能を実装するまで

Last updated at Posted at 2019-09-17

環境

  • macOS Mojave 10.14.6
  • laravel 5.8.35
  • MySQL 8.0.17

composerのインストールが既に終わっていることを前提に解説していきます。
MySQL 8.0以降ではユーザー関連のコマンドの仕様により色々とエラーにハマってしまったので、今後開発する人のためや、自分用のメモとしてまとめて見ました。

アプリの新規作成

composer create-project laravel/laravel app_name --prefer-dist

MySQLでデータベースを作成する。

MySQL> create database db_name;

MySQLユーザーを作成する(既に作成している場合は不要)

MySQL> create user 'dbuser'@'localhost' identified by 'password';

MySQL 8.0以降はパスワードLOWでも条件が厳しくなっているので、今まで通っていたパスワードでも怒られることがあります。

// LOWにする場合
MySQL> SET GLOBAL validate_password.policy = LOW;

https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html

MySQLユーザーに権限を与える

MySQL> grant all on db_name.* to 'dbuser'@'localhost';

MySQLの操作は以上で終了 \q でMySQLを終了させておく。

MySQL8以降はgrantコマンドでユーザー作成ができないのでこの手順で作成する

パスワード認証方式を変更する

MySQL 8.0以降ではデフォルトで caching_sha2_password となっている。このままだと接続がうまくいかないので mysql_native_password へ変更する必要がある。

まずは確認してみる

mysql> select user, host, plugin from mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| dbuser           | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+

dbuserの認証方式を変更する

mysql> ALTER USER 'dbuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.10 sec)

laravelとMySQLを接続する

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=app_name
DB_USERNAME=dbuser
DB_PASSWORD=password

.envファイルにデータベース名、ユーザー名、パスワードを記述。

usersテーブルを作成する

php artisan migrate

laravelでは既にusersテーブルを作成する為のマイグレーションファイルが用意されているので今回はそのまま使用します。

ログイン機能を実装する

php artisan make:auth

laravelではこのコマンドを実行するだけでログイン機能を実装できます。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4