J'ai du mal à faire fonctionner MySQL 8. C'est l'erreur qui apparaît à chaque fois que j'essaie de php artisan migrate
. J'ai réinstallé MySQL une seule fois jusqu'à présent parce que je ne voulais plus me faire mal à la tête sur ce qui se passait. J'ai édité le database.php
à partir d'autres réponses possibles, mais cela ne semble pas non plus fonctionner. J'ai vu une réponse possible à cause du cryptage sha256 du mot de passe root par MySQL 8, c'est pourquoi je veux revenir à MySQL 5.7, que j'ai recherché fonctionne avec laravel très bien. Cependant, je veux garder les paquets à jour et garder MySQL 8 uniquement si je peux le faire fonctionner avec laravel.
PHP 7.2
Comment faire fonctionner MySQL 8 avec 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
MISE À JOUR D'UN AUTRE CORRECTIF I DID POUR CORRIGER CECI: Avec une nouvelle installation de MySQL, j'ai sélectionné NON pour crypter les mots de passe dans la configuration (en utilisant le cryptage hérité, pas le cryptage SHA) et il a commencé à fonctionner avec Laravel sans aucun problème - Utilisez simplement un mot de passe long et fort. référence de l'étape d'installation: https://www.percona.com/blog/wp-content/uploads/2018/05/Installing-MySQL-8.0-on-Ubuntu-2.png
Puisque PHP ne comprend pas caching_sha2_password
, redéfinissez l'utilisateur sur mysql_native_password:
ALTER USER 'forge'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'new_password'