Accès refusé à l'utilisateur 'homestead' @ 'localhost' (en utilisant le mot de passe: oui)

Je suis sur un Mac OS Yosemite utilisant Laravel 5.0.

tandis que dans mon Local environnement, je cours php artisan migrate je continue à obtenir:

enter image description here

Configuration

Voici mon .env

APP_ENV=local
APP_DEBUG=true
APP_KEY=*****

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

appconfigbase de données.php

   'mysql'       => [
    'driver'      => 'mysql',
    'host'        => env('DB_HOST', 'localhost'),
    'database'    => env('DB_DATABASE', 'homestead'),
    'username'    => env('DB_USERNAME', 'homestead'),
    'password'    => env('DB_PASSWORD', 'secret'),
    'unix_socket' => '/tmp/mysql.sock',
    'charset'     => 'utf8',
    'collation'   => 'utf8_unicode_ci',
    'prefix'      => '',
    'strict'      => false,
    ]

Comment éviter ce genre d'erreur ?

j'ai essayé:


1

dans app/base de données.php

remplacer localhost par 127.0.0.1

'host'=> env('DB_HOST', 'localhost') --> 'host' => env('DB_HOST', '127.0.0.1')

Aussi, dans .env

DB_HOST=localhost --> DB_HOST=127.0.0.1


2

Essayez de spécifier l'environnement

php artisan migrate --env=local


3

vérifier si le MySQL est exécuté par run

mysqladmin -u homestead -p status Enter password: secret

je suis

Uptime: 21281 Threads: 3 Questions: 274 Slow queries: 0 Opens: 327 Flush tables: 1 Open tables: 80 Queries per second avg: 0.012

ce qui veut dire qu'il fonctionne.


4

Vérifiez MySQL Unix Socket ( cette étape travaille pour moi )

125
demandé sur kyo 2015-04-20 21:59:20

23 réponses

la raison du refus d'accès pour l'erreur de l'utilisateur ‘homestead’@’localhost’ laravel 5 est caching-issue de la .env.le fichier php cause Laravel 5 utilise la configuration basée sur l'environnement dans votre .fichier env.

1 . Allez dans le répertoire racine de votre application et ouvrez .fichier env (dans ubuntu peut être il est caché alors appuyez sur ctrl + h pour afficher les fichiers cachés et si vous êtes dans le terminal alors tapez: ls -a pour afficher les fichiers cachés) dans votre éditeur et changez le paramètre de configuration de la base de données. puis enregistrez votre .fichier env

DB_HOST=localhost
DB_DATABASE=laravelu
DB_USERNAME=root
DB_PASSWORD=''

2 . ensuite, redémarrez votre serveur apache/serveur web. et rafraîchissez votre page et vous avez fait

3 . Si toujours problème essayez d'exécuter la commande ci-dessous pour effacer l'ancienne configuration du fichier de cache.

php artisan config:clear

Maintenant vous avez fini avec l'erreur

190
répondu Abdou Tahiri 2018-02-15 13:42:44

TLDR: Vous devez arrêter le serveur Ctrl + c et commencer à nouveau à l'aide de php artisan serve


détails:

si vous utilisez Laravel, et que vous avez déjà démarré un serveur dev local par php artisan serve

et après avoir le serveur ci-dessus déjà en cours d'exécution, vous changez les choses liées à votre serveur de base de données .fichier env. Comme le déplacement d' à partir de MySQL SQLite ou quelque chose. Vous devez vous assurer que vous arrêtez au-dessus du processus i.e. Ctrcl C ou n'importe quoi qui arrêtent le processus. Puis redémarrez Artisan Serve à nouveau i.e. y php artisan serve et rafraîchissez votre navigateur et votre problème lié à la base de données sera corrigé. C'est ce qui a fonctionné pour moi pour Laravel 5.3

44
répondu Mohsin 2016-12-21 19:03:32

Deux façon de le résoudre

Première manière (Non recommandé)

ouvrir votre fichier de configuration de base de données (laravel_root/config/database.php) & rechercher le bloc de code ci-dessous.

        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'blog'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD', ''),

modifier le bloc de code comme ci-dessous

        'host'      => 'yourHostName',
        'database'  => 'YourDatabastName',
        'username'  => 'YoutDatabaseUsername',
        'password'  => 'YourDatabasePassword',

Seconde manière (Recommandé par Laravel)

Vérifiez la racine de votre Laravel il y a un fichier d'appel .env s'il n'existe pas, regardez pour .env.exemple, le copier/renommer .env après ça, le dossier est fichu !

APP_ENV=local
APP_DEBUG=true
APP_KEY=someRandomNumber

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null

modifier le bloc ci-dessous comme suit

DB_HOST=yourHostName
DB_DATABASE=yourDatabaseName
DB_USERNAME=yourDatabaseUsername
DB_PASSWORD=youPassword

maintenant ça va marcher.

29
répondu absiddiqueLive 2016-07-24 23:52:02

si vous utilisez le serveur web par défaut de PHP (par exemple php artisan serve ), vous devez redémarrer votre serveur après avoir changé votre .valeurs des fichiers env.

19
répondu Vrushal Raut 2017-03-27 10:57:45

si vous utilisez php artisan migrate non pas de vagrant box mais de machine hôte alors vous devez définir à l'intérieur du .env l'ip de la boîte 192.168.10.10

et évidemment définir la permission à l'utilisateur homestead à partir de votre ip quelque chose comme

grant all privileges on *.* to 'homestead'@% identified by 'secret';

dans .env fichier

DB_HOST=192.168.10.10
DB_DATABASE=homestead
DB_USERNAME=homestead
17
répondu wdog 2015-12-11 16:47:29

lorsque vous installez Homestead, cela crée un défaut " homestead" la base de données dans la machine virtuelle. Vous devez SSH dans la VM homestead ssh et courir les migrations à partir de là. Si vous travaillez localement sans VM, vous devrez créer votre base de données manuellement. Par défaut, la base de données devrait être appelé homestead, le nom d'utilisateur est homestead et le mot de passe est secret.

cochez cette thread sur laracasts ou cette blog post pour plus de détails


si vous obtenez

[PDOException] SQLSTATE[HY000] [2002] No such file or directory

essayez de changer "host" dans le fichier /app/config/database.fichier php de "localhost" à "127.0.0.1". vous pouvez trouver plus de détails et d'autres corrections ici sur ce thread .

vérifiez également si vous avez spécifié le bon unix_socket . vérifier ce thread .

10
répondu Sojan V Jose 2017-05-23 12:10:41

j'ai eu le même problème et à la fin Il s'est avéré que j'ai juste eu à redémarrer le serveur et recommencer

Ctrl + c puis

php artisan serve
9
répondu code511788465541441 2016-12-08 18:51:04

sous Windows PC suivez ci-dessous.


  1. accédez au dossier racine de votre application.

  2. Modifier la .fichier env

Access Root folder of your application

Edit the .env File

éditer le Mettre en évidence et modifier le nom D'Utilisateur et le mot de passe adn le nom de la base de données en conséquence.

9
répondu Fred Ondieki 2017-06-29 10:41:30

Check MySQL UNIX Socket

Trouver unix_socket emplacement à l'aide de MySQL

mysql -u homestead -p

mysql> show variables like '%sock%';
+-----------------------------------------+-----------------------------+
| Variable_name                           | Value                       |
+-----------------------------------------+-----------------------------+
| performance_schema_max_socket_classes   | 10                          |
| performance_schema_max_socket_instances | 322                         |
| socket                                  | /var/run/mysqld/mysqld.sock |
+-----------------------------------------+-----------------------------+
3 rows in set (0.00 sec)

puis je passe à config/database.php

je mets à jour cette ligne: 'unix_socket' => '/tmp/mysql.sock',

à: 'unix_socket' => '/var/run/mysqld/mysqld.sock',

C'est ça. Il fonctionne pour mon que mon 4ème essai.J'espère que ces mesures aideront quelqu'un. : D

8
répondu kyo 2015-06-15 12:39:15

dans le futur. Essayez d'effacer votre configuration d'abord

php artisan config:clear. 

fermez toutes les fenêtres terminal /cmd puis redémarrez terminal/CMD et cela devrait éliminer le message d'erreur. Voir si cela fonctionne.

6
répondu Krishneil 2017-03-27 07:06:14

compris! Connectez-vous en tant que root et accordez à homestead@localhost les droits sur tout.

de votre terminal:

$ homestead ssh

$ mysql -u root -p

Enter password: secret

mysql> grant all privileges on *.* to 'homestead'@'localhost' identified by 'secret';

Query OK, 0 rows affected (0.00 sec)
exit

maintenant l'Utilisateur régulier homesteads a accès à toutes vos tables, et en tant que tel, devrait être en mesure d'exécuter des choses comme des migrations.

5
répondu Mike Wright 2015-12-11 15:48:12

après changement .env avec la nouvelle configuration, vous devez arrêter le serveur et exécutez-le à nouveau (php artisan servir). Car laravel obtient l'environnement quand il initialise le serveur. Si vous ne redémarrez pas, vous changerez le .env vous demande pourquoi les changements n'ont pas lieu!!

5
répondu Luis Lopez 2017-11-23 10:59:28

j'utilise laravel 5.* je me suis dit que j'avais un appel de fichier .env dans la racine du projet qui ressemble à quelque chose comme ceci:

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

et c'était trop d'écrire la configuration bd pour que vous puissiez effacer ces variables de configuration pour que laravel prenne la configuration sous /config ou Configure votre configuration ici.

j'ai fait le deuxième et ça fonctionne pour moi :)

4
répondu Jesus Gonzalez 2015-10-29 16:03:39

je voulais juste poster ceci parce que ce numéro m'a frustré pendant environ 3 heures aujourd'hui. Je n'ai essayé aucune des méthodes énumérées dans les autres réponses, bien qu'elles semblent toutes raisonnables. En fait, j'étais sur le point d'essayer de passer en revue chacune des solutions proposées ci-dessus, mais d'une façon ou d'une autre j'ai eu ce coup d'inspiration. Voici ce qui a fonctionné pour moi pour me remettre au travail -- YMMV:

1) Trouvez votre .fichier env. 2) renommez votre .env fichier à autre chose. Laravel 5 doit utilisez ce fichier comme override pour les paramètres ailleurs dans le framework. J'ai renommé le mien .env.vieux 3) Vous devrez peut-être redémarrer votre serveur web, mais je n'ai pas.

bonne chance!

3
répondu Eric Hepperle - CodeSlayer2010 2015-09-25 19:54:54

Vérifier " .env " fichier dans le dossier racine. est-il correct?

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
3
répondu Ferhat KOÇER 2016-07-02 12:49:47

après config db redémarrer le:

 php artisan serve

si le service est actif avant de définir db config.

3
répondu A1Gard 2018-08-06 20:33:24

vous devez exécuter la commande $ php artisan migrate depuis Homestead, pas votre Mac.

2
répondu Martin Bean 2015-04-20 19:56:28

j'ai trouver la solution

  1. allez dans le répertoire racine de votre application et ouvrez .fichier env (dans ubuntu peut être il est caché alors appuyez sur ctrl+h pour afficher les fichiers cachés) dans votre éditeur et modifier le paramètre de configuration de la base de données. puis enregistrez votre .fichier env

  2. redémarrez ensuite votre serveur apache/serveur web. et rafraîchissez votre page et vous avez fait

  3. Si encore problème essayez d'exécuter ci-dessous la commande pour effacer l'ancien fichier de cache de configuration.

Cela a fonctionné pour moi gl ...

2
répondu DucaBgd 2016-08-02 12:01:02

connectez - vous à MYSQL-utilisez la base de données mysql.

sélectionner * de L'utilisateur;

assurez-vous que votre colonne hôte est correcte. Ce doit être l'hôte à partir duquel vous vous connectez (votre serveur d'application) que ce soit l'adresse IP, ou le nom DNS. Aussi '%' travailler (sens générique) mais ne sera pas sécurisée.

1
répondu beiller 2015-04-20 20:12:10

Vérifiez votre .fichier de configuration, si vous avez modifié l'une des variables, veuillez redémarrer laravel serveur, et votre problème sera résolu

1
répondu Ogbonna Vitalis 2017-12-19 08:47:56

A. Après mise à jour du .fichier env avec les paramètres de la base de données, clear larval setting par "running php artisan config: clear"

B. Assurez-vous de redémarrer votre serveur apache / redémarrer la commande" php artisan serve " pour que vos paramètres prennent effet.

1
répondu SoftwarerHelp 2018-05-21 11:08:32

j'ai eu le même problème en utilisant SQLite. Mon problème était que DB_DATABASE pointait vers le mauvais emplacement du fichier.

crée le fichier sqlite avec la commande touch et affiche le chemin du fichier en utilisant php artisan tinker.

$ touch database/database.sqlite
$ php artisan tinker
Psy Shell v0.8.0 (PHP 5.6.27 — cli) by Justin Hileman
>>> database_path(‘database.sqlite’)
=> "/Users/connorleech/Projects/laravel-5-rest-api/database/database.sqlite"

affiche alors le chemin exact de la variable DB_DATABASE.

DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=/Users/connorleech/Projects/laravel-5-rest-api/database/database.sqlite
DB_USERNAME=homestead
DB_PASSWORD=secret

sans le chemin correct, vous obtiendrez l'erreur Accès refusé

0
répondu Connor Leech 2017-06-11 04:09:38

si vous avez une erreur retournant quelque chose comme PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu' est dû à vous changez votre configuration batabase en DB_DATABASE=laravelu . Donc pour l'instant vous aussi:

  1. modifier la DB_DATABASE= [yourdatabase] ou
  2. créer une base de données appelée laravelu dans votre phpmyadmin

ce doit être en mesure de le résoudre

0
répondu Byron Wong 2017-06-28 08:28:03