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:
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 )
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
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
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.
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.
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
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 .
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
sous Windows PC suivez ci-dessous.
-
accédez au dossier racine de votre application.
-
Modifier la .fichier env
é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.
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
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.
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.
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!!
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 :)
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!
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
après config db redémarrer le:
php artisan serve
si le service est actif avant de définir db config.
vous devez exécuter la commande $ php artisan migrate
depuis Homestead, pas votre Mac.
j'ai trouver la solution
-
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
-
redémarrez ensuite votre serveur apache/serveur web. et rafraîchissez votre page et vous avez fait
- 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 ...
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.
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
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.
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é
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:
- modifier la
DB_DATABASE=
[yourdatabase]
ou - créer une base de données appelée
laravelu
dans votre phpmyadmin
ce doit être en mesure de le résoudre