webentwicklung-frage-antwort-db.com.de

PHP Laravel: Es konnte keine Verbindung hergestellt werden, da die Zielmaschine diese aktiv ablehnte

Ich baue eine Webanwendung in Laravel 5. Die Anwendung soll "Kategorienamen" in einer MySQL-Datenbank speichern und ein Formular anzeigen, um neue "Kategorienamen" hinzuzufügen. Wenn ich den Befehl php artisan serve ausführen und zu http: // localhost: 8000/admin/categories/ navigiere, erhalte ich die folgende Fehlermeldung:

PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.

In einigen Beiträgen, die ich über den Stapelüberlauf gelesen habe, haben viele Benutzer, die diesen Fehler feststellen, die .env-Datei nicht ordnungsgemäß konfiguriert. Dadurch werden die Standardeinstellungen für das PHP -Datenobjekt (PDO) überschrieben, wie in der Datei database.php angegeben . Die .env-Datei ist unten definiert:

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

Der mysql-Schlüssel in der Datei database.php lautet:

 'mysql' => [
            'driver'    => 'mysql',
            'Host'      => env('DB_Host', 'localhost'),
            'database'  => env('DB_DATABASE', 'Homestead'),
            'username'  => env('DB_USERNAME', 'Homestead'),
            'password'  => env('DB_PASSWORD', 'secret'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,

Seltsamerweise kann ich eine Verbindung zur Datenbank herstellen, wenn ich ssh in meine virtuelle Maschine einführe und mysql -uhomestead -psecret Homestead ausführe. Die Frage ist, warum kann Laravel keine Verbindung zu MySQL herstellen, wenn ich mich mit denselben Parametern direkt mit MySQL verbinden kann? Was könnte sonst den Zugang zu Laravel verweigern?

12
jstein

Ich habe die in der Homestead.yaml angegebene IP-Adresse von localhost in 192.168.10.10 geändert. Dann lief ich Homestead provision und das schien das Problem zu beheben. Der Host-Computer kann localhost oder 127.0.0.1 nicht auflösen, da dies ihm bereits zugeordnet ist. 

6
jstein

Ich habe das gleiche Problem mit Wampserver. Es hat für mich funktioniert:

Sie müssen diese Datei ändern: "C:\wamp\bin\mysql [mysql_version]\my.ini" Zum Beispiel: "C:\wamp\bin\mysql [mysql5.6.12]\my.ini"

Und ändern Sie den Standardport 3306 in 80. (Zeilen 20 und 27 in beiden) Port = 3306 To port = 80

Ich hoffe das ist hilfreich.

Gehen Sie dann in Ihr Control Panel und starten Sie Apache & MySQL Services.

2
Jigs Virani

warum kann Laravel keine Verbindung zu MySQL herstellen, wenn ich mich mit denselben Parametern direkt mit MySQL verbinden kann?

Komm schon, env('DB_Host', 'localhost') ist nirgends gleich NULL und env('DB_USERNAME', 'Homestead') ist nirgends gleich Homestead

Sie können nicht "dasselbe" als solche Dinge bezeichnen, wie explizit angegebenes Literal, ein fehlender Parameter oder das Ergebnis einer Funktion! Das sind drei verschiedene Sachen! 

Sie können "dasselbe" nur sagen, wenn Sie in beiden Fällen wörtlich - dieselben Parameter angeben:

mysql -hlocalhost -uhomestead -psecret Homestead

für die Shell und 

'mysql' => [
        'driver'    => 'mysql',
        'Host'      => 'localhost',
        'database'  => 'Homestead',
        'username'  => 'Homestead',
        'password'  => 'secret',

für Laravel.

2

Ich hatte das gleiche Problem und las alle Antworten im Internet, aber keiner von ihnen half! Endlich die Antwort gefunden und ich hoffe, dass diese Lösung jemandem hilft.

Ich habe gerade meinen DB_PORT auf 33060 gesetzt und das Problem gelöst.

1
Moslem Deris

Gründe können sein:

Wenn Sie versuchen, auf die Datenbank von einem anderen Server zuzugreifen, dann ist das größte Problem mit dem Conman-Problem DB-Zugriff ist nur für localhost/127.0.0.1

Lösung: Sie können my.cnf ändern (auf Ubuntu befindet sich wieder in /etc/mysql/my.cnf) und kann Folgendes ändern:

bind-address   = 0.0.0.0

oder

bind-address   = SERVER_PUBLIC_IP_ADDRESS

Ich empfehle, einen DB-Benutzer anstelle von Root zu erstellen und die Root-Verwendung zu löschen, da es nicht sicher ist, DB-Zugriff von einer beliebigen IP-Adresse mit Root-Benutzer bereitzustellen.

Wenn Sie versuchen, eine DB von demselben Server zu verbinden:

Lösung: Verwenden Sie einfach TCP/IP anstelle des Unix-Sockets. Sie würden dies tun, indem Sie beim Herstellen der Verbindung 127.0.0.1 anstelle von localhost verwenden. Der Unix-Socket kann jedoch schneller und sicherer verwendet werden.

Nach den vorgenommenen Änderungen haben Sie den mysql-Dienst neu gestartet 

Sudo service mysql restart
1

Ich habe mich verändert

DB_Host = localhost

zu 

DB_Host = localhost: 3307

in der .env-Datei

1
Raja ji

Ich hatte das gleiche Problem einmal, aber in meinem eigenen Fall lief ich auf dem lokalen Server. Ich entdeckte später, dass der Fehler:

"PDOException with a message 'SQLSTATE[HY000] [2002] Es konnte keine Verbindung hergestellt werden, da der Zielcomputer diese aktiv abgelehnt hat. "

ich habe Apache and MySQL in Xampp Control Panel nicht gestartet, daher konnte die Anwendung das gewünschte Ergebnis nicht abrufen, da keine Koonection vorhanden war. 

Sofort habe ich beide Apache and MySQL in der Xampp-Systemsteuerung the error was fixed gestartet. Ich hoffe, das funktioniert für Sie

0
YoungM

Deaktivieren Sie in Windows einfach User Access Persimissions (UAC) .- open run - geben Sie msconfing ein und drücken Sie die Eingabetaste - Gehen Sie zu Tools und suchen Sie nach.UAC -. . -Starten Sie den PC neu 

Denken Sie daran, es durch die Firewall zuzulassen, wenn Sie dazu aufgefordert werden.

0
Henry

In meinem Fall hatte ich die Adresse des VM wie die Voreinstellung des Homestead (192.168.10.10) in DB_Host in die Datei .env geschrieben. Aber es funktioniert nur für artisan migrate. Die Verwendung von Apps zur Remote-Verbindung dieser Datenbank erfordert jedoch die Verwendung einer IP-Adresse von 127.0.0.1.

Ich hoffe es hilft jemandem.

0
Paul Burilichev

Überprüfen Sie Ihren XAMPP (wenn Sie verwenden). Ich habe immer und immer wieder den gleichen Fehler erhalten, bis ich feststellte, dass meine xampp nicht aktiviert oder offline ist, also habe ich meine xampp aktiviert, dann funktioniert es endlich.

0
Justin Herrera

Ich habe diesen Fehler mit der SQLite-Datenbank erhalten. Im Gegensatz zu anderen Umgebungen, in denen die Datenbankdatei erstellt wurde, wenn sie nicht vorhanden ist, musste ich in Laravel die Datenbankdatei manuell erstellen. Ich habe es erstellt nach meinen Server laufen lassen; und das führt mich zu diesem Fehler. Nach dem Neustart des Servers war es in Ordnung.

0
Jan Bodnar

manchmal vielleicht caching problem:

    php artisan config:clear
0
joun