Ich bin auf einem Mac OS Yosemite mit Laravel 5.0.
Während ich in meiner lokalen Umgebung laufe php artisan migrate
, bekomme ich immer wieder:
Zugriff für Benutzer 'homestead' @ 'localhost' verweigert (mit Passwort: YES)
Aufbau
Hier ist meine .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 diese Art von Fehler?
Ich habe es versucht :
1
in app / database.php
Ersetzen localhost
durch127.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
Überprüfen Sie MySQL UNIX Socket ( Dieser Schritt funktioniert für mich )
Antworten:
Der Grund für die Verweigerung des Zugriffs für den Fehler 'homestead' @ 'localhost' laravel 5 des Benutzers ist das Caching-Problem der Datei .env.php, da Laravel 5 die umgebungsbasierte Konfiguration in Ihrer .env-Datei verwendet.
1 . Gehen Sie zu Ihrem Anwendungsstammverzeichnis und öffnen Sie die ENV-Datei (in Ubuntu ist sie möglicherweise ausgeblendet. Drücken Sie also ctrl+ h, um ausgeblendete Dateien anzuzeigen. Wenn Sie sich im Terminal befinden, geben Sie Folgendes ein , um ausgeblendete Dateien anzuzeigen
ls -a
) in Ihrem Editor und ändern Sie die Datenbankkonfigurationseinstellung. Speichern Sie dann Ihre .env-Datei2 . 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.
Jetzt sind Sie mit dem Fehler fertig
quelle
PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'
._..env
undconfig:clear
cache:clear
alle Befehle, neu gestartet ,apache
aber immer noch das gleiche Problem bekommen.TLDR: Sie müssen den Server Ctrl+ stoppen cund erneut verwenden
php artisan serve
Einzelheiten:
Wenn Sie Laravel verwenden und den lokalen Entwicklungsserver bereits von gestartet haben
php artisan serve
Und nachdem der oben genannte Server bereits ausgeführt wurde, ändern Sie Ihre Datenbankserver-bezogenen Inhalte in der ENV-Datei. Als würde man von MySQL zu SQLite wechseln oder so. Sie müssen sicherstellen, dass Sie über dem Prozess anhalten, dh
Ctrcl C
oder irgendetwas, das den Prozess stoppt. Starten Sie dann Artisan Serve erneut, dhphp artisan serve
aktualisieren Sie Ihren Browser, und Ihr Problem mit der Datenbank wird behoben. Dies hat bei Laravel 5.3 für mich funktioniertquelle
Zwei Möglichkeiten, es zu lösen
Erster Weg (nicht empfohlen)
Öffnen Sie Ihre Datenbankkonfigurationsdatei (laravel_root / config / database.php) und suchen Sie nach dem folgenden Codeblock.
Ändern Sie den Codeblock wie folgt
Zweiter Weg (empfohlen von Laravel)
Überprüfen Sie, ob Ihr Laravel-Stammverzeichnis dort einen Dateiaufruf hat .env, falls nicht vorhanden. Suchen Sie nach .env.example, kopieren Sie es / benennen Sie es in .env um, danach sieht die Datei wie ein Schlag aus!
Ändern Sie den folgenden Block wie folgt
Jetzt wird es gut funktionieren.
quelle
root/config/database.php
scheinen überflüssig zu sein.Wenn Sie
php artisan migrate
NICHT von Vagrant Box, sondern von Host-Computer verwenden, müssen Sie innerhalb.env
der IP der Box definieren192.168.10.10
und offensichtlich setzen Sie die Erlaubnis, Homestead-Benutzer von Ihrer IP so etwas wie
in
.env
Dateiquelle
grant all privileges on *.* to 'homestead'@'localhost' identified by 'secret';
arbeitete aber für mich.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.quelle
Überprüfen Sie diesen Thread auf Laracasts oder diesen Blog-Beitrag für weitere Details
wenn du bekommst
Versuchen Sie, "host" in der Datei /app/config/database.php von "localhost" in "127.0.0.1" zu ändern. Weitere Details und andere Korrekturen finden Sie hier in diesem Thread .
Überprüfen Sie auch, ob Sie das richtige angegeben haben
unix_socket
. Überprüfen Sie diesen Thread .quelle
Überprüfen Sie MySQL UNIX Socket
Suchen Sie den Speicherort von unix_socket mit MySQL
mysql -u homestead -p
Dann gehe ich zu config / database.php
Ich aktualisiere diese Zeile:
'unix_socket' => '/tmp/mysql.sock',
zu:
'unix_socket' => '/var/run/mysqld/mysqld.sock',
Das ist es. Es funktioniert für mich als mein 4. Versuch. Ich hoffe, diese Schritte helfen jemandem. : D.
quelle
Ich hatte das gleiche Problem und am Ende stellte sich heraus, dass ich nur den Server neu starten und neu starten musste
Ctrl+ cdann
quelle
In Windows PC Folgen Sie unten.
Greifen Sie auf den Stammordner Ihrer Anwendung zu.
Bearbeiten Sie die .env-Datei
Bearbeiten Sie das Markierte und ändern Sie den Benutzernamen und das Kennwort sowie den Datenbanknamen entsprechend.
quelle
in meinem Fall nach dem Neustart das Problem meines Servers behoben.
Beenden / Schließen Sie den Befehl "PHP Artisan Serve" und
Führen Sie den Befehl "PHP Artisan Serve" erneut aus .
quelle
Irgendwann in der Zukunft. Versuchen Sie zuerst, Ihre Konfiguration zu löschen
Schließen Sie alle Terminal- / Cmd-Fenster und starten Sie Terminal / CMD neu. Dadurch sollte die Fehlermeldung behoben sein. Überprüfen Sie, ob es funktioniert.
quelle
Nach der Konfiguration der Datenbank starten Sie Folgendes neu:
Wenn der Serve vor dem Setzen von db config aktiv ist.
quelle
Ich benutze Laravel 5. * Ich glaube, ich habe einen Dateiaufruf
.env
im Stammverzeichnis des Projekts, der ungefähr so aussieht:Und das war über das Schreiben der bd-Konfiguration hinaus, damit Sie diese Konfigurationsvariablen löschen können, damit laravel die Konfiguration unter / config übernimmt oder Ihre Konfiguration hier einrichtet.
Ich habe das zweite gemacht und es funktioniert für mich :)
quelle
Verstanden! Melden Sie sich als root an und gewähren Sie homestead @ localhost die Rechte für alles.
Von Ihrem Terminal aus:
Jetzt hat der reguläre Benutzer von Homesteads Zugriff auf alle Ihre Tabellen und sollte daher in der Lage sein, beispielsweise Migrationen auszuführen.
quelle
Nachdem Sie .env mit der neuen Konfiguration geändert haben, müssen Sie den Server stoppen und erneut ausführen (PHP Artisan Serve). Ursache Laravel erhält die Umgebung, wenn der Server initialisiert wird. Wenn Sie nicht neu starten, ändern Sie die .env und fragen sich, warum die Änderungen nicht stattfinden !!
quelle
Alles was Sie tun müssen, ist Ihre .env- Datei zu ändern .
Schreiben Sie vor DB_DATABASE den Namen der Datenbank und vor DB_USERNAME root .
quelle
Ich wollte dies nur posten, weil mich dieses Problem 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 versuchen, jede der oben vorgeschlagenen Lösungen durchzugehen, aber irgendwie bekam ich diesen Inspirationsschub. Folgendes hat für mich funktioniert, damit ich wieder arbeiten kann - 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 ich musste nicht.
Viel Glück!
quelle
Sie müssen den
$ php artisan migrate
Befehl in Homestead ausführen , nicht auf Ihrem Mac.quelle
MBP-bheng-aveniors
. Das ist nicht deine VM. Sie müssen SSH in Homestead ($ homestead ssh
) ausführen und dann$ php artisan migrate
innerhalb dieser SSH-Sitzung ausführen .Überprüfen Sie Ihre " .env " -Datei im Stammordner. ist es richtig?
quelle
Ich habe eine Lösung gefunden
Wechseln Sie in Ihr Anwendungsstammverzeichnis und öffnen Sie die ENV-Datei (in Ubuntu ist sie möglicherweise ausgeblendet, drücken Sie Strg + H, um ausgeblendete Dateien anzuzeigen) in Ihrem Editor und ändern Sie die Datenbankkonfigurationseinstellung. Speichern Sie dann Ihre .env-Datei
Starten Sie dann Ihren Apache-Server / Webserver neu. und aktualisieren Sie Ihre Seite und Sie haben getan
Das hat bei mir funktioniert ...
quelle
Ändern Sie diese Dinge einfach in der .env-Datei Ihres Stammordners.
Es hat bei mir funktioniert.
quelle
In meinem Fall (Laravel 5+) musste ich mein Passwort in einfache Anführungszeichen setzen und den Konfigurationscache löschen:
und dann ausführen:
quelle
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 '%' funktioniert (dh Platzhalter), ist aber nicht sicher.
quelle
Überprüfen Sie Ihre .env-Datei. Wenn Sie eine der Variablen bearbeitet haben, starten Sie den Laravel-Server neu, und Ihr Problem wird behoben
quelle
A. Nachdem Sie die .env-Datei mit den Datenbankeinstellungen aktualisiert haben, löschen Sie die Larveneinstellung, indem Sie "php artisan config: clear ausführen" ausführen.
B. Bitte stellen Sie sicher, dass Sie Ihren Apache-Server neu starten / führen Sie den Befehl "php artisan serve" erneut aus, damit Ihre Einstellungen wirksam werden.
quelle
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 Befehl touch und geben Sie den Dateipfad mit PHP Artisan Tinker aus.
Geben Sie dann genau diesen Pfad zur Variablen DB_DATABASE aus.
Ohne den richtigen Pfad wird der Fehler "Zugriff verweigert" angezeigt
quelle
Wenn Sie einen Fehler beim Zurückgeben haben,
PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'
liegt dies daran, dass Sie Ihre Batabase-Konfiguration als ändernDB_DATABASE=laravelu
. Also vorerst auch Sie:DB_DATABASE=
[yourdatabase]
laravelu
phpmyadminDies sollte es lösen können
quelle
In meinem Fall wurde der Fehler durch meine Homestead / Vagrant-Konfiguration "verursacht", die ich vergessen habe :) Ich habe versucht, die Migration nur über die Befehlszeile auszuführen.
Wenn Sie die Homestead Vagrant Box-Umgebung verwenden, sollten Sie Ihre Migration von Ihrem Homestead-Computer aus ausführen (nachdem Sie eine Verbindung mit ssh hergestellt haben :).
[email protected]:22
Dann sind die Zugriffsrechte in Ordnung und ermöglichen die Ausführung der Migration.quelle
Aus Ihrer Frage geht hervor, dass Sie ein Gehöft betreiben. Stellen Sie in diesem Fall sicher, dass Sie die Befehle in Ihrer VM ausführen. Viele Entwickler, einschließlich mir, machen häufig Fehler und führen handwerkliche Befehle außerhalb der VM aus, mit denen die Befehle versuchen, eine Verbindung zu unserer lokalen Datenbank herzustellen, auf die über localhost zugegriffen werden kann. Diese unterscheidet sich von der von homestead verwendeten Datenbank. CD in Ihr Homestead-Verzeichnis und ausführen
Dann CD in Code, wenn Sie dort Ihre Projekte behalten und CD in Ihr Projekt einbinden und ausführen.
php artisan migrate again
Ich hoffe, dies wird anderen Menschen helfen.quelle