web-dev-qa-db-fra.com

Accès refusé pour l'utilisateur 'Homestead' @ 'localhost' (avec mot de passe: YES)

Je suis sur un Mac OS Yosemite en utilisant Laravel 5.0.

Dans mon environnement local, je lance php artisan migrate je continue à recevoir:

Accès refusé pour l'utilisateur 'Homestead' @ 'localhost' (avec mot de passe: YES)

Configuration

Voici mon . Env

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

DB_Host=localhost
DB_DATABASE=Homestead
DB_USERNAME=Homestead
DB_PASSWORD=secret

app\config\database.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 puis-je éviter ce genre d'erreur?

j'ai essayé:


1

dans app/database.php

Remplacez 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érifiez si MySQL fonctionne par exécution

mysqladmin -u Homestead -p status Enter password: secret

J'ai eu

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 que ça tourne.


4

Vérifiez le socket MySQL UNIX (. Cette étape fonctionne pour moi ).

153
kyo

Vérifiez le socket MySQL UNIX

Trouver nix_socket location en utilisant 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)

Ensuite, je vais à config/database.php

Je met à jour cette ligne: 'unix_socket' => '/tmp/mysql.sock',

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

C'est ça. Cela fonctionne pour mon 4ème essai. J'espère que ces étapes aideront quelqu'un. :RÉ

9
kyo

La raison de l'accès refusé pour l'utilisateur 'Homestead' @ 'localhost' laravel 5 est liée à l'erreur caching-issue du fichier .env.php cause Laravel 5 utilise une configuration basée sur l'environnement dans votre fichier .env.

1. Accédez au répertoire racine de votre application et ouvrez le fichier .env (il se peut qu’il soit masqué dans ubuntu, appuyez sur ctrl+h pour afficher les fichiers cachés et si vous êtes dans le terminal, tapez: ls -a pour afficher les fichiers cachés) dans votre éditeur et modifiez 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. puis redémarrez votre serveur Apache/serveur Web. et rafraîchissez votre page et vous avez fait

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

php artisan config:clear

Maintenant vous avez fini avec l'erreur

246
Abdou Tahiri

TLDR: Vous devez arrêter le serveur Ctrl + c et recommencez avec php artisan serve


Détails:

Si vous utilisez Laravel et que vous avez déjà démarré le serveur de développement local par php artisan serve

Et après avoir déjà exécuté le serveur ci-dessus, vous modifiez les éléments liés au serveur de base de données dans le fichier .env. Comme passer de MySQL à SQLite ou quelque chose comme ça. Vous devez vous assurer que vous arrêtez le processus ci-dessus, c'est-à-dire Ctrcl C ou tout ce qui peut arrêter le processus. Ensuite, redémarrez Artisan Serve à nouveau, c'est-à-dire y php artisan serve, actualisez votre navigateur et le problème lié à la base de données sera résolu. C'est ce qui a fonctionné pour moi pour Laravel 5.3

63
Mohsin

Deux façons de le résoudre

Première manière (non recommandé)

Ouvrez le fichier de configuration de votre base de données (racine_laravel/config/database.php) et recherchez 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', ''),

Changer le bloc de code comme ci-dessous

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

Deuxième voie (recommandé par Laravel)

Vérifiez que votre racine Laravel a un appel de fichier .env s'il n'existe pas, cherchez .env.example, copiez/renommez-le en .env après que le fichier paraisse exploser!

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

Modifiez le bloc ci-dessous comme suit

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

Maintenant cela fonctionnera bien.

31
absiddiqueLive

si vous utilisez php artisan migrate PAS à partir de la boîte de dialogue mais à partir de la machine hôte, vous devez définir à l'intérieur du .env l'adresse IP de la boîte 192.168.10.10

et évidemment définir l'autorisation à l'utilisateur Homestead de votre adresse IP quelque chose comme

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

dans le fichier .env

DB_Host=192.168.10.10
DB_DATABASE=Homestead
DB_USERNAME=Homestead
21
wdog

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 modifié les valeurs de votre fichier .env.

21
Vrushal Raut

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

Ctrl + c ensuite

php artisan serve
11

Lorsque vous installez Homestead, cela crée une base de données "Homestead" par défaut dans la VM. Vous devez utiliser SSH dans la VM Homestead ssh et lancer vos migrations à partir de cet emplacement. Si vous travaillez localement sans ordinateur virtuel, vous devez créer votre base de données manuellement. Par défaut, la base de données devrait s'appeler Homestead, le nom d'utilisateur est Homestead et le mot de passe est secret.

vérifier ceci fil sur les laracasts ou ceci article de blog pour plus de détails


si vous obtenez

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

essayez de remplacer "localhost" par "127.0.0.1" dans le fichier /app/config/database.php de "hôte". vous pouvez trouver plus de détails et d’autres correctifs ici sur ce fil .

Vérifiez également si vous avez spécifié le bon unix_socket. vérifiez ceci fil .

10
Sojan V Jose

Sous Windows, suivez les instructions ci-dessous.


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

  2. Editez le fichier .env

Access Root folder of your application

Edit the .env File

Éditez le surligné et changez le nom d'utilisateur et le mot de passe et le nom de la base de données en conséquence.

9
Fred Ondieki

dans mon cas, après redémarrage mon serveur, le problème avait disparu.

quitte/ferme la commande "php artisan serve" et

relancez la commande "commande php artisan serve".

8
sh6210

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

php artisan config:clear. 

Fermez toutes les fenêtres du terminal/cmd, puis redémarrez le terminal/CMD. Le message d'erreur devrait alors disparaître. Voir si cela fonctionne.

8
Krishneil

après la config db redémarrer le:

 php artisan serve

Si le service est actif avant set db config.

6
A1Gard

Tout ce que vous avez à faire est de modifier votre fichier . Env.

DB_Host=localhost
DB_DATABASE=Homestead
DB_USERNAME=Homestead
DB_PASSWORD=secret

Devant DB_DATABASE, écrivez le nom de la base de données et devant DB_USERNAME, utilisez root .

5
Apoorv

Après avoir changé .env avec la nouvelle configuration, vous devez arrêter le serveur et le relancer (php artisan serve). Cause laravel obtient l'environnement lorsqu'il a initialisé le serveur. Si vous ne redémarrez pas, vous allez changer le fichier .env en vous demandant pourquoi les changements ne se produisent pas !!

5
Luis Lopez

j'utilise laravel 5. * Je suppose que j'ai un appel de fichier .env à la racine du projet qui ressemble à 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 au-dessus de l’écriture de la configuration de bd afin que vous puissiez supprimer ces paramètres de configuration afin que laravel prenne la configuration sous/config ou configurez votre configuration ici.

J'ai fait la seconde et ça marche pour moi :)

5
Jesus Gonzalez

Je l'ai! Connectez-vous en tant que root et accordez à Homestead @ localhost les droits sur tout.

Depuis 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 pouvoir exécuter des tâches telles que les migrations.

5
Mike Wright

j'ai trouver une solution

  1. Allez dans le répertoire racine de votre application et ouvrez le fichier .env (dans Ubuntu, il est peut-être caché. Appuyez sur ctrl + h pour afficher les fichiers cachés) dans votre éditeur et modifiez le paramètre de configuration de la base de données. puis enregistrez votre fichier .env

  2. puis redémarrez votre serveur Apache/serveur Web. et rafraîchissez votre page et vous avez fait

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

Cela a fonctionné pour moi gl ...

3
DucaBgd

Vérifiez votre fichier ". Env" dans le dossier racine. est-ce correct?

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=Homestead
DB_USERNAME=Homestead
DB_PASSWORD=secret
3
Ferhat KOÇER

Je voulais juste poster ceci parce que ce problème 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 j'ai quand même 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 fichier .env en quelque chose d'autre. Laravel 5 doit utiliser ce fichier en tant que remplacement pour les paramètres situés ailleurs dans la structure. J'ai renommé le mien en .env.old 3) Vous devrez peut-être redémarrer votre serveur Web, mais ce n'est pas nécessaire.

Bonne chance!

Vous devez exécuter la commande $ php artisan migrate à partir de Homestead, pas de votre Mac.

3
Martin Bean

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

Sélectionnez * de l'utilisateur;

Assurez-vous que votre colonne Host est correcte. Ce doit être l'hôte à partir duquel vous vous connectez (votre serveur d'application), qu'il s'agisse d'une adresse IP ou d'un nom DNS. De plus, '%' fonctionnera (ce qui signifie un caractère générique) mais ne sera pas sécurisé.

1
beiller

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

1
Ogbonna Vitalis

il suffit de modifier ces éléments dans le fichier .env de votre dossier racine.

DB_DATABASE=your_db_name
DB_USERNAME=your_db_user_name
DB_PASSWORD='your_db_password'

Cela a fonctionné pour moi.

1
sradha

A. Après avoir mis à jour le fichier .env avec les paramètres de la base de données, effacez le paramètre larvaire en "exécutant php artisan config: clear"

B. Veuillez vous assurer de redémarrer votre serveur Apache/de relancer la commande "php artisan serve" pour que vos paramètres prennent effet.

1
SoftwarerHelp

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

Créez le fichier sqlite avec la commande touch et indiquez 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"

Indiquez ensuite le chemin exact dans 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 bon chemin, vous obtiendrez l'erreur d'accès refusé

0
Connor Leech

Si vous rencontrez une erreur lors du renvoi de quelque chose comme _PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'_ est dû au fait que vous modifiez votre configuration de batabase en tant que _DB_DATABASE=laravelu_. Donc pour l'instant vous soit:

  1. Changer le _DB_DATABASE=_ [yourdatabase]o
  2. créer une base de données appelée laravelu dans votre phpmyadmin

cela devrait pouvoir le résoudre

0
Byron Wong

Dans mon cas, l'erreur était "causée" par ma configuration Homestead/Vagrant à propos de laquelle j'avais oublié :) d'essayer d'exécuter la migration uniquement à partir de la ligne de commande.

Si vous utilisez l'environnement Homestead Vagrant Box, vous devez exécuter votre migration depuis votre ordinateur Homestead (après vous y être connecté à l'aide de ssh: [email protected]:22), les droits d'accès seront corrects et permettront à la migration de s'exécuter.

0
Picard