wake-up-neo.net

Zugriff verweigert für Benutzer 'Homestead' @ 'localhost' (mit Passwort: JA)

Ich verwende auf einem Mac OS Yosemite Laravel 5.0.

Während ich mich in meiner lokalen Umgebung befinde, starte ich php artisan migrate und bekomme immer wieder:

Zugriff verweigert für Benutzer 'Homestead' @ 'localhost' (mit Passwort: JA)

Konfiguration

Hier ist mein . 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,
    ]

Wie vermeide ich solche Fehler?

Ich habe versucht:


1

in app/database.php

Ersetzen Sie localhost durch 127.0.0.1

'Host'=> env('DB_Host', 'localhost') -> 'Host' => env('DB_Host', '127.0.0.1')

Auch in . Env

DB_Host=localhost -> DB_Host=127.0.0.1


2

Versuchen Sie, die Umgebung anzugeben

php artisan migrate --env=local


3

Überprüfen Sie, ob MySQL ausgeführt wird

mysqladmin -u Homestead -p status Enter password: secret

Ich habe

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

Was bedeutet, dass es läuft.


4

Check MySQL UNIX Socket ( Dieser Schritt funktioniert bei mir )

153
kyo

Überprüfen Sie den MySQL UNIX Socket

Suchen Sie mit MySQL den Speicherort nix_socket

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)

Dann gehe ich zu config/database.php

Ich aktualisiere diese Zeile: 'unix_socket' => '/tmp/mysql.sock',

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

Das ist es. Ich hoffe, diese Schritte helfen jemandem. : D

9
kyo

Der Grund für die Verweigerung des Zugriffs für den Benutzer 'Homestead' @ 'localhost' laravel 5 ist Caching-Problem der .env.php-Datei, die Laravel 5 verursacht verwendet die umgebungsbasierte Konfiguration in Ihrer ENV-Datei.

1. Wechseln Sie in Ihr Anwendungsstammverzeichnis und öffnen Sie die ENV-Datei ctrl+h um versteckte Dateien anzuzeigen & wenn Sie sich im Terminal befinden, geben Sie Folgendes ein: ls -a um versteckte Dateien anzuzeigen) in Ihrem Editor und ändern Sie die Konfigurationseinstellungen der Datenbank. Speichern Sie dann Ihre ENV-Datei

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

2. Starten Sie dann Ihren Apache-Server/Webserver neu. und aktualisieren Sie Ihre Seite und Sie haben getan

. Wenn das Problem weiterhin besteht, versuchen Sie, den folgenden Befehl auszuführen, um die alte Konfigurations-Cache-Datei zu löschen.

php artisan config:clear

Jetzt sind Sie mit dem Fehler fertig

246
Abdou Tahiri

TLDR: Sie müssen den Server anhalten Ctrl + c und beginne erneut mit php artisan serve


Einzelheiten:

Wenn Sie Laravel verwenden und den lokalen Entwicklungsserver bereits von php artisan serve gestartet haben

Und nachdem der oben genannte Server bereits ausgeführt wurde, ändern Sie Ihre datenbankserverbezogenen Daten in der ENV-Datei. Als würde man von MySQL zu SQLite wechseln oder so. Sie müssen sicherstellen, dass Sie den obigen Prozess stoppen, d. H. Ctrcl C oder alles, was den Prozess stoppt. Starten Sie anschließend Artisan Serve erneut, d. H. Y php artisan serve, und aktualisieren Sie Ihren Browser. Das Problem mit der Datenbank wird behoben. Das hat für mich bei Laravel funktioniert 5.3

63
Mohsin

Zwei Wege, um es zu lösen

Erster Weg (nicht empfohlen)

Öffnen Sie Ihre Datenbankkonfigurationsdatei (laravel_root/config/database.php) und suchen Sie nach dem folgenden Codeblock.

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

Ändern Sie den Codeblock wie folgt

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

Zweiter Weg (empfohlen von Laravel)

Überprüfen Sie Ihr Laravel Root dort haben Sie einen Dateiaufruf .env falls nicht vorhanden, suchen Sie nach .env.example, kopieren/benennen Sie es in .env um, danach sieht die Datei wie geblasen aus!

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

Ändern Sie den folgenden Block wie folgt

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

Jetzt wird es gut funktionieren.

31
absiddiqueLive

wenn Sie php artisan migrate NICHT von einer Vagrant-Box, sondern von einem Host-Computer aus verwenden, müssen Sie in .env die IP-Adresse der Box 192.168.10.10 definieren.

und offensichtlich die Erlaubnis zu Homestead-Benutzer von Ihrer IP etwas wie

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

in .env Datei

DB_Host=192.168.10.10
DB_DATABASE=Homestead
DB_USERNAME=Homestead
21
wdog

Wenn Sie den Standard-Webserver von PHP verwenden (z. B. php artisan serve), müssen Sie Ihren Server neu starten, nachdem Sie die Werte Ihrer .env-Datei geändert haben.

21
Vrushal Raut

Ich hatte das gleiche Problem und am Ende stellte sich heraus, dass ich nur den Server neu starten und neu starten musste

Ctrl + c dann

php artisan serve
11

Bei der Installation von Homestead wird eine Standarddatenbank "Homestead" in der VM erstellt. Sie sollten SSH in den VM Homestead ssh einfügen und Ihre Migrationen von dort aus ausführen. Wenn Sie lokal ohne VM arbeiten, müssen Sie Ihre Datenbank manuell erstellen. Standardmäßig sollte die Datenbank Homestead heißen, der Benutzername lautet Homestead und das Kennwort ist geheim.

check this thread on laracasts oder this blog post für mehr details


wenn Sie bekommen

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

versuchen Sie, "Host" in der Datei /app/config/database.php von "localhost" auf "127.0.0.1" zu ändern. Weitere Details und Fehlerbehebungen finden Sie hier thread .

Überprüfen Sie auch, ob Sie den richtigen unix_socket angegeben haben. überprüfe dies thread .

10
Sojan V Jose

Folgen Sie auf dem Windows-PC den nachstehenden Anweisungen.


  1. Greifen Sie auf den Stammordner Ihrer Anwendung zu.

  2. Bearbeiten Sie die ENV-Datei

Access Root folder of your application

Edit the .env File

Bearbeiten Sie den Markierten und ändern Sie den Benutzernamen und das Passwort sowie den Datenbanknamen entsprechend.

9
Fred Ondieki

in meinem Fall war das Problem nach Neustart ​​ meines Servers verschwunden.

beende/schließe den "php artisan serve" Befehl und

Führen Sie den Befehl "php artisan serve" erneut aus.

8
sh6210

Irgendwann in der Zukunft. Versuchen Sie zuerst, Ihre Konfiguration zu löschen

php artisan config:clear. 

Schließen Sie alle Terminal/Cmd-Fenster und starten Sie Terminal/CMD neu. Dadurch sollte die Fehlermeldung beseitigt werden. Sehen Sie, ob es funktioniert.

8
Krishneil

nach der Konfiguration starten Sie db neu:

 php artisan serve

Wenn der Server aktiv ist, bevor Sie db config gesetzt haben.

6
A1Gard

Sie müssen lediglich Ihre .env -Datei ändern.

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

Schreiben Sie vor DB_DATABASE den Namen der Datenbank und verwenden Sie vor DB_USERNAME root .

5
Apoorv

Nach der Änderung von .env mit der neuen Konfiguration müssen Sie den Server stoppen und erneut ausführen (PHP Artisan Serve). Ursache laravel ruft die Umgebung ab, wenn der Server initialisiert wird. Wenn Sie nicht neu starten, ändern Sie die .env und fragen sich, warum die Änderungen nicht stattfinden !!

5
Luis Lopez

ich benutze laravel 5. * Ich glaube, ich habe einen Dateiaufruf .env im Stammverzeichnis des Projekts, der ungefähr so ​​aussieht:

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

Und das war das Überschreiben der BD-Konfiguration, damit Sie diese Konfigurationsvariablen löschen können, also laravel nehmen Sie die Konfiguration unter/config oder richten Sie Ihre Konfiguration hier ein.

Ich habe das zweite gemacht und es funktioniert bei mir :)

5
Jesus Gonzalez

Verstanden! Melden Sie sich als root an und gewähren Sie Homestead @ localhost die Rechte für alles.

Von Ihrem 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

Jetzt haben reguläre Benutzer von Homesteads Zugriff auf alle Ihre Tabellen und sollten daher beispielsweise Migrationen ausführen können.

5
Mike Wright

ich habe eine Lösung gefunden

  1. Wechseln Sie in Ihr Anwendungsstammverzeichnis und öffnen Sie die ENV-Datei (in Ubuntu ist sie möglicherweise ausgeblendet, drücken Sie also Strg + h, um ausgeblendete Dateien anzuzeigen) in Ihrem Editor und ändern Sie die Konfigurationseinstellungen der Datenbank. Speichern Sie dann Ihre ENV-Datei

  2. starten Sie dann Ihren Apache-Server/Webserver neu. und aktualisieren Sie Ihre Seite und Sie haben getan

  3. Wenn das Problem weiterhin besteht, versuchen Sie, den folgenden Befehl auszuführen, um die alte Konfigurations-Cache-Datei zu löschen.

Das hat bei mir geklappt gl ...

3
DucaBgd

Überprüfen Sie Ihre ". Env" - Datei im Stammordner. ist es richtig?

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

Ich wollte dies nur posten, weil dieses Problem mich heute für ungefähr 3 Stunden frustriert hat. Ich habe keine der in den anderen Antworten aufgeführten Methoden ausprobiert, obwohl sie alle vernünftig erscheinen. Eigentlich wollte ich gerade jede der oben vorgeschlagenen Lösungen durchgehen, aber irgendwie bekam ich diesen Inspirationsschub. Hier ist, was für mich funktioniert hat, um mich wieder zum Arbeiten zu bringen - YMMV:

1) Finden Sie Ihre .env-Datei. 2) Benennen Sie Ihre .env-Datei in etwas anderes um. Laravel 5 muss diese Datei als Überschreibung für Einstellungen an einer anderen Stelle im Framework verwenden. Ich habe meine in .env.old umbenannt. 3) Möglicherweise müssen Sie Ihren Webserver neu starten, aber das musste ich nicht.

Viel Glück!

Sie müssen den Befehl $ php artisan migrate in Homestead ausführen, nicht auf Ihrem Mac.

3
Martin Bean

Melden Sie sich bei MYSQL an - verwenden Sie die MySQL-Datenbank.

Wählen Sie * unter Benutzer;

Stellen Sie sicher, dass Ihre Host-Spalte korrekt ist. Es sollte der Host sein, von dem aus Sie eine Verbindung herstellen (Ihr Anwendungsserver), sei es die IP-Adresse oder der DNS-Name. Auch '%' wird funktionieren (Platzhalter bedeuten), ist aber nicht sicher.

1
beiller

Überprüfen Sie Ihre .env-Datei, wenn Sie eine der Variablen bearbeitet haben, starten Sie den laravel -Server freundlich neu, und Ihr Problem wird behoben

1
Ogbonna Vitalis

ändern Sie diese Einstellungen einfach in der ENV-Datei Ihres Stammordners.

DB_DATABASE=your_db_name
DB_USERNAME=your_db_user_name
DB_PASSWORD='your_db_password'

Es hat bei mir funktioniert.

1
sradha

A. Nachdem Sie die .env-Datei mit den Datenbankeinstellungen aktualisiert haben, löschen Sie die larval-Einstellung, indem Sie "php artisan config: clear" ausführen.

B. Stellen Sie sicher, dass Sie Ihren Apache-Server neu starten/den Befehl "php artisan serve" erneut ausführen, damit Ihre Einstellungen wirksam werden.

1
SoftwarerHelp

Ich hatte das gleiche Problem mit SQLite. Mein Problem war, dass DB_DATABASE auf den falschen Dateispeicherort zeigte.

Erstellen Sie die SQLite-Datei mit dem Touch-Befehl und geben Sie den Dateipfad mit PHP Artisan Tinker aus.

$ 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"

Geben Sie dann den genauen Pfad zur Variablen DB_DATABASE aus.

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

Ohne den richtigen Pfad wird der Fehler "Zugriff verweigert" angezeigt

0
Connor Leech

Wenn Sie einen Fehler bei der Rückgabe von _PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'_ haben, ändern Sie Ihre batabase-Konfiguration als _DB_DATABASE=laravelu_. Also fürs Erste entweder:

  1. Ändern Sie den _DB_DATABASE=_ [yourdatabase]oder
  2. erstellen Sie eine Datenbank mit dem Namen laravelu in Ihrem phpmyadmin

dies sollte es lösen können

0
Byron Wong

In meinem Fall wurde der Fehler durch meine Homestead/Vagrant-Konfiguration "verursacht", über die ich vergessen habe :) beim Versuch, die Migration nur über die Befehlszeile auszuführen.

Wenn Sie die Homestead Vagrant Box-Umgebung verwenden, sollten Sie die Migration von Ihrem Homestead-Computer aus ausführen (nachdem Sie eine Verbindung mit ssh: [email protected]:22 hergestellt haben). Dann sind die Zugriffsrechte in Ordnung und die Migration kann ausgeführt werden.

0
Picard