Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

MySQL8系はパスワードが空だとアクセスできないらしい

More than 1 year has passed since last update.

LaravelでDB Migrateしようとするとエラー

ローカルでLaravelでプロジェクトを作成して、envファイルが以下のようにパスワードが空の状態で、MySQL 8.0に対してmigrateを行うとエラーがでた。

// .env
DB_USERNAME=root
DB_PASSWORD=

以下を実行するとエラーが起きた

$ sudo php artisan migrate

エラー内容

   Illuminate\Database\QueryException  : SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')

   at /Users/mbp/Documents/sample-laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:665
     661|         // If an exception occurs when attempting to run a query, we'll format the error
     662|         // message to include the bindings with SQL, which will make this exception a
     663|         // lot more helpful to the developer instead of just the database's errors.
     664|         catch (Exception $e) {
     665|             throw new QueryException(
     666|                 $query, $this->prepareBindings($bindings), $e
     667|             );
     668|         }
     669|

   Exception trace:

   1   PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)")
       /Users/mbp/Documents/sample-laravel/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

   2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=laravel", "root", "", [])
       /Users/mbp/Documents/sample-laravel/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

   Please use the argument -v to see more details.

PDOExceptionが出てる。MySQL5.6とかでは気にしてなかったんだけど。。。

解決

単純にパスワードが空だとダメらしい。これはMySQLが使っている認証プラグインに起因するとのこと。
参考:stackoverflow

MySQLにrootで入って、以下を打つ。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password
BY 'password';

passwordのところは、rootに設定したい任意のパスに変更する。
他のユーザでログインする場合はrootのところをユーザ名に変更する。

mozukuzuku
地方Webエンジニア ・DBスペシャリスト 保持 ・AWSアソシエイト(Dev, SA, SysOps)保持
Why not register and get more from Qiita?
  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