web-dev-qa-db-fra.com

php artisan migrate - SQLSTATE [HY000] [1045] Accès refusé à l'utilisateur 'laravel' @ 'localhost'

Je veux installer et apprendre laravel après ce cours: https://laracasts.com/series/laravel-from-scratch-2017/episodes/4

Lorsque j'essaie d'utiliser la commande php artisan migrate, le message d'erreur suivant s'affiche:

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

[PDOException]                                                                            
  SQLSTATE[HY000] [1045] Access denied for user 'laravel'@'localhost' (using password: NO)

Essayant de chercher des réponses, je me suis dit que je pouvais apporter quelques modifications au fichier .env, mais je ne sais pas quoi, rien n’a fonctionné jusqu’à présent.

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=

J'utilise Ubuntu 16.04, pas un Mac OS X comme dans la vidéo, alors je me demande ce que je devrais faire différemment? Existe-t-il un paramètre mysql que je n'ai pas créé?

3
MattSom

Vous n'avez pas d'utilisateur appelé 'laravel'. Vous devez remplacer DB_USERNAME par celui que vous utilisez réellement pour accéder à votre base de données. Il s'agit principalement de la racine par défaut afin que les modifications apportées env devrait être 

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
5
Yassine Younes

Si vous utilisez MAMP et le nom d'utilisateur racine par défaut/pw, votre configuration de base de données de fichiers .env doit utiliser 'localhost' au lieu de 127.0.0.1 et 'root' pour les DEUX noms d'utilisateur et mot de passe:

DB_CONNECTION=mysql
DB_Host=localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
2
cschaefer

Lorsque j’ai eu ce problème, c’est parce que j’ai oublié que mon environnement local exécutait mysql sur un port autre que 3306. Pour moi, c’était 3307. Si vous utilisez XAMPP, je voudrais vérifier le port que vous utilisez et vous assurer qu’il correspond votre fichier .env.

1
Daniel Foust

étape 1: Ajouter un nouvel utilisateur dans phpmyadmin. par exemple: nom d'utilisateur-xyz, mot de passe-123

étape 2: créer une nouvelle base de données, par exemple: nombase

step3: mettez à jour votre fichier .env comme ceci:

    DB_CONNECTION=mysql
    DB_Host=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbname
    DB_USERNAME=xyz    
    DB_PASSWORD=123

étape 4: effacez maintenant votre cache "php artisan clear: cache"

étape 5: essayez enfin de migrer vos tables avec "php artisan migrate"

1
Ankit kumar

J'ai eu la situation lorsque le serveur n'a pas vu la mise à jour du fichier .env et que php artisan cache:clear ne m'aide pas, mais qu'il me fallait simplement rafraîchir le serveur php artisan serve

1
dos4dev

J'ai eu le même problème. Ce qui a finalement fonctionné pour moi a été de réaliser Méthode 2 sur cette page .

Grâce à ma lutte, j'ai appris qu'il y a 4 endroits différents où vous pouvez définir un mot de passe pour la variable root de l'installation MySQL fournie avec XAMPP. Définir le mot de passe dans seulement 1 ou 2 de ces endroits ne suffit pas. Voici ce que j'ai fait pour pouvoir effectuer ma migration initiale:

  1. Dans le fichier Laravel .env, dans la section DB_....
  2. Dans localhost:[your Apache port]/phpmyadmin, via Comptes d'utilisateur -> racine -> Modifier les privilèges -> Changer le mot de passe.
  3. Dans localhost:[your Apache port]/phpmyadmin, utilisez la méthode décrite dans Méthode 2 de cette page .
  4. Dans votre fichier config.inc.php, qui pour moi (sous MacOS) était dans /Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.php. Cette méthode est également décrite dans Méthode 2 de cette page .

Et ensuite redémarrez MySQL et votre serveur Web (Apache) .

Sachez qu'après avoir harmonisé vos mots de passe et réessayé votre migration, vous obtiendrez peut-être une erreur qui ressemblera à l'erreur de mot de passe d'accès refusé. Cependant, il s'agit d'une erreur différente liée aux longueurs de chaîne. Voir ici pour savoir comment résoudre ce problème.

0
Cameron Hudson

Si vous avez déjà créé des bases de données sur phpmyadmin avec un nom d'utilisateur et un mot de passe différents, votre compte hôte local nécessite qu'un nouvel utilisateur ait un mot de passe différent. J'ai essayé le nom d'utilisateur et le mot de passe que j'ai utilisés précédemment et qui ont résolu le problème pour moi.

0
D. O'Shea