Help us understand the problem. What is going on with this article?

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

環境

  • 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ではこのコマンドを実行するだけでログイン機能を実装できます。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away