web-dev-qa-db-ja.com

MySql 8をlaravelで実行する方法は?

MySQL 8を動作させるのに苦労しています。これは、php artisan migrateを試行するたびに表示されるエラーです。何が起こっているのかもう頭を痛めたくなかったので、これまでに1回だけMySQLを再インストールしました。他の可能な回答からdatabase.phpを編集しましたが、これも機能しないようです。 MySQL 8のルートパスワードのsha256暗号化が原因である可能性のある答えを見ました。そのため、検索したMySQL 5.7に戻りたいのですが、laravelでうまく動作します。ただし、パッケージを最新の状態に保ち、laravelで動作させることができる場合にのみMySQL 8を保持したいと考えています。

PHP 7.2

MySQL 8をLaravelで使用するにはどうすればよいですか?

 'mysql' => [
            'driver' => 'mysql',
            'Host' => env('DB_Host', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'version' => 8,
            'modes' => [
                'ONLY_FULL_GROUP_BY',
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_ENGINE_SUBSTITUTION',
            ],
        ],

「」

Illuminate\Database\QueryException  : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = laravel_tut and table_name = migrations)

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

  Exception trace:

  1   PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")
      /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:Host=127.0.0.1;port=3306;dbname=laravel_tut", "root", "fdgkadgaf9g7ayaig9fgy9ad8fgu9adfg9adg", [])
      /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

別の修正を更新I DIDこれを修正するには:MySQLの新規インストールで、パスワードの暗号化にNOを選択しましたセットアップ(SHA暗号化ではなく、レガシー暗号化を使用)を使用して、Laravelで問題なく動作するようになりました-長くて強力なパスワードを使用してください。インストール手順の参照: https://www.percona.com/blog/wp-content/uploads/2018/05/Installing-MySQL-8.0-on-Ubuntu-2.png

5
Zac

PHPはcaching_sha2_passwordを理解できないため、ユーザーをmysql_native_passwordに戻します。

ALTER USER 'forge'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'new_password'
5
danblack