Mysql
 sql >> Base de données >  >> RDS >> Mysql

lavaral 5 ERROR{ (SQLSTATE[HY000] [1045] Accès refusé pour l'utilisateur 'root'@'localhost' (en utilisant le mot de passe :OUI)}

Par défaut, laravel suppose que vous souhaiterez avoir différentes configurations pour différents environnements. Par exemple. dans un environnement de test, vous souhaiterez peut-être avoir un nom d'utilisateur et un mot de passe différents et dans un environnement de production différent. Étant donné que laravel a tant de fichiers de configuration, cela devient rapidement un cauchemar pour gérer tous ceux-ci. C'est pourquoi laravel utilise les variables d'environnement de PHP.

Consultez la documentation ici.

Ce qui est essentiellement dit, c'est que si vous souhaitez utiliser les variables "d'environnement", que laravel utilise par défaut, vous devez placer toutes vos configurations dans le env() méthode comme déjà mentionné.

Si vous ne souhaitez pas le faire, par ex. pour les projets simples, supprimez simplement l'env de votre code, comme ceci.

'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'laravel',
        'username'  => 'root',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

Notez que vous pouvez mélanger et assortir. c'est-à-dire que vous pouvez avoir certaines variables dans env et d'autres autonomes.

Alors pourquoi utiliser env du tout ?

Disons que votre application compte 100 testeurs, tous placés à différents endroits. Dans laravel, vous devez coder environ 8 à 10 fichiers de configuration. Vous devez également version-control ces fichiers. Vous avez donc deux problèmes à résoudre :

  1. Vous ne souhaitez pas envoyer les mêmes identifiants aux 100 utilisateurs. Ils peuvent également utiliser différentes bases de données, serveurs de cache, etc., ce qui signifie qu'ils auront des configurations différentes. Ainsi, chaque utilisateur doit gérer ces 8 à 10 fichiers de configuration à la main.
  2. Vous ne souhaitez pas envoyer ces fichiers de configuration au contrôle de version. Parce que si vous le faites, le monde entier connaîtra vos secrets d'API et en profitera peut-être (tout comme le mot de passe). De plus, si vous regardez les fichiers de configuration laravel, vous remarquerez qu'il existe d'autres informations telles que le fuseau horaire, la propriété de débogage, etc. qui se trouvent également dans les fichiers de configuration, et vous souhaitez les contrôler en version. Alors, comment contrôlez-vous la version de ces fichiers de configuration tout en masquant vos informations sensibles ?

La réponse est env variables. Laravel utilise dotenv dont la la documentation est disponible ici . Fondamentalement, ce sont des variables qui résident dans un fichier appelé .env dans une paire clé-valeur. Par exemple

Exemple de contenu du fichier .env

APP_DEBUG=false
APP_KEY=ABCDEFGH
...

Une fois que vous avez défini votre fichier .env comme ceci, vous pouvez obtenir la valeur en utilisant la clé en tant que telle env('APP_DEBUG') .

Cela résout donc le problème mentionné ci-dessus de la manière suivante :

  1. vous conservez le .env fichier à vous-même. Et vous déclarez également un autre fichier appelé .env.example qui est une réplique exacte du fichier d'origine, à l'exception du fait qu'il contient des exemples de valeurs, et non vos valeurs sensibles. Ensuite, vous passez ce nouveau fichier d'exemple à tout le monde. Ils remplaceront les exemples de données par leurs propres informations sensibles.
  2. Puisque vous contrôlez la version du fichier d'exemple, vous pouvez contrôler la version de tous vos fichiers de configuration car ils ne contiennent pas le secret. Le secret est dans les fichiers .env. Tous ces fichiers de configuration contiennent des valeurs comme celles-ci env('APP_KEY') et la valeur réelle est remplacée au moment de l'exécution à l'aide de votre fichier .env.