95681


以前、質問した[MySQLの新しいパスワード設定の際のパスワードポリシー](https://ja.stackoverflow.com/questions/95672/mysql%e3%81%ae%e6%96%b0%e3%81%97%e3%81%84%e3%83%91%e3%82%b9%e3%83%af%e3%83%bc%e3%83%89%e8%a8%ad%e5%ae%9a%e3%81%ae%e9%9a%9b%e3%81%ae%e3%83%91%e3%82%b9%e3%83%af%e3%83%bc%e3%83%89%e3%83%9d%e3%83%aa%e3%82%b7%e3%83%bc)に続いた質問になるのですが、Laravelでマイグレーションをコマンドから行い、ユーザーの作成とデータベースの作成を試みたのですが、アクセス拒否のエラーが発生しました。

mysqlのパスワードポリシーはLOWにして、文字列を4文字以上に変更しました。  
そして.envファイルのmysqlに関する記述は以下のようになっていました。  
・現在のパスワードポリシー

[code]

    mysql> show variables like 'validate_password%';
    +--------------------------------------+-------+
    | Variable_name                        | Value |
    +--------------------------------------+-------+
    | validate_password.check_user_name    | ON    |
    | validate_password.dictionary_file    |       |
    | validate_password.length             | 4     |
    | validate_password.mixed_case_count   | 1     |
    | validate_password.number_count       | 1     |
    | validate_password.policy             | LOW   |
    | validate_password.special_char_count | 1     |
    +--------------------------------------+-------+
    7 rows in set (0.01 sec)
    
[/code]

・.env

[code]

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=myapp
    DB_USERNAME=DBuser
    DB_PASSWORD=DBuser
    
[/code]

マイグレーションの実行時のエラーはこちらになります。

[code]

    ec2-user:~/environment/myapp $ php artisan migrate 
    
       Illuminate\Database\QueryException 
    
      SQLSTATE[HY000] [1045] Access denied for user 'DBuser'@'localhost' (using password: YES) (SQL: select * from information_schema.tables where table_schema = myapp and table_name = migrations and table_type = 'BASE TABLE')
    
      at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671
        667|         // If an exception occurs when attempting to run a query, we'll format the error
        668|         // message to include the bindings with SQL, which will make this exception a
        669|         // lot more helpful to the developer instead of just the database's errors.
        670|         catch (Exception $e) {
      > 671|             throw new QueryException(
        672|                 $query, $this->prepareBindings($bindings), $e
        673|             );
        674|         }
        675| 
    
          +33 vendor frames 
      34  artisan:37
          Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    
[/code]

そこでmysqlのDB_HOSTやDB_PORTを変更して、試してみたのですが、エラーは変わりませんでした。

このアクセス拒否のエラーを調べると、パスワードの不整合さや、ログインが出来ないということも原因だと思ったのですが、rootからログインもでき、パスワードも先述のようにパスワードポリシーを変更し、パスワードポリシーに抵触しないパスワードにしたつもりです。  
パスワードポリシーの変更はrootだけに適応されたのでしょうか？

[php artisan migrateが上手く行かなかった時の対処法/SQLSTATE[HY000]
[1045]](https://terrblog.com/php-artisan-
migrate%E3%81%8C%E4%B8%8A%E6%89%8B%E3%81%8F%E8%A1%8C%E3%81%8B%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95-sqlstatehy000-1045/)

Mysqlバージョン：mysql Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)  
Laravelバージョン：Laravel Framework 7.30.6


CC BY-SA 4.0
2023-07-18T15:22:44.440
95676
2023-07-19T04:49:02.440
58130
question
mysql laravel
Laravel マイグレーション時にMySQLへのアクセス拒否が発生した


Laravel からではなく MySQL クライアントから DBuser としてログインできるか確認してみてください。たとえば `mysql -u
DBuser -p -h 127.0.0.1` でログインできますか。質問文の書き方から見るに、もしかして MySQL 側で DBuser
ユーザーを作成していないのではないかと疑っています。まずは DB サーバー側でユーザーを作成してください。

Laravel のマイグレーションの一般論については公式ドキュメントを置いておきます:
<https://laravel.com/docs/7.x/migrations>


CC BY-SA 4.0
2023-07-19T01:40:15.683
95681
2023-07-19T04:49:02.440
2023-07-19T04:49:02.440
19110
19110
95676
answer