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é:
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
Essayez de spécifier l'environnement
php artisan migrate --env=local
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.
Vérifiez le socket MySQL UNIX (. Cette étape fonctionne pour moi ).
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É
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
TLDR: Vous devez arrêter le serveur Ctrl + c et recommencez avec php artisan serve
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
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.
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
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.
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
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 .
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".
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.
après la config db redémarrer le:
php artisan serve
Si le service est actif avant set db config.
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 .
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 !!
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 :)
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.
j'ai trouver une solution
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
puis redémarrez votre serveur Apache/serveur Web. et rafraîchissez votre page et vous avez fait
Cela a fonctionné pour moi gl ...
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
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.
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é.
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.
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.
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.
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é
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:
DB_DATABASE=
_ [yourdatabase]
olaravelu
dans votre phpmyadmincela devrait pouvoir le résoudre
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.