it-swarm.com.de

SQLSTATE [HY000] [2002] Verbindung in Laravel Gehöft abgelehnt

Verwenden von Mac OS X und Homestead 2.2.1 mit Laravel 5.2.

Im Terminal (in Homestead in meinem Projektordner) kann ich PHP-Handwerker ausführen, um alle verfügbaren Befehle anzuzeigen. Wenn ich versuche, PHP-Handwerker zu migrieren, erhalte ich einen Verbindungsfehler:
SQLSTATE[HY000] [2002] Connection refused


Ich habe ein Laravel-Projekt mit diesen .env Einstellungen eingerichtet 

DB_Host=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=Homestead
DB_PASSWORD=secret

Ich habe auch localhost für DB_Host und root für DB_USERNAME und DB_PASSWORD ausprobiert. Und alle möglichen Varianten davon zusammen! 


In Sequel Pro (Datenbankverwaltungsanwendung) kann ich mich mit diesen Einstellungen verbinden

Host       127.0.0.1
Username   Homestead
Password   secret
Database   tcv
Port       33060

Diese Datenbank ist offensichtlich leer, da ich nicht vom Terminal zu ihr migrieren kann ...

Soweit ich feststellen kann, handelt es sich um ein Konfigurationsproblem, da ich mich mit Sequel Pro verbinden kann. Aber ich habe ehrlich gesagt keine Ahnung, was falsch eingestellt ist.

Danke für die Hilfe !!

EDIT
Aus irgendeinem Grund erhalte ich die gleiche SQLSTATE[HY000] [2002] Connection refused-Fehlermeldung, wenn ich mein Projekt nach MAMP verschiebe und PHP-Handwerker ausführen möchte.
Nun bin ich völlig verloren ... 

21
nclsvh

Problem

In Laravel haben Sie config/database.php, wo sich alle Einstellungen für die Verbindung befinden. Sie haben auch eine .env-Datei im Stammverzeichnis Ihres Projekts (die alle zur Zeiteinsparung verwenden). Diese enthält Variablen, die Sie für das gesamte Projekt verwenden können.

In einem L5-Standardprojekt sieht der MySql-Abschnitt von config/database.php folgendermaßen aus:

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

Beachten Sie, dass kein Port eingestellt ist!

Obwohl ich in meiner .env-Datei DB_PORT=33060 eingestellt hatte. Diese value (3306) wurde jedoch nie in den config/database.php eingelesen.
Seien Sie also kein Dummkopf wie ich und vergessen Sie nicht, die database.php-Datei zu überprüfen.


FIX
Fügen Sie einfach 'port' => env('DB_PORT', 3306), zu Ihrer config/database.php hinzu und setzen Sie diesen Wert in .env wie folgt: DB_PORT=33060

31
nclsvh

Ich bin gerade auf dieses Thema gestoßen und habe festgestellt, dass dies durch eine Änderung in der .env-Datei von 127.0.0.1 in localhost behoben wurde. 

DB_Host = localhost

34
Richard Hood

Wenn Sie MAMP auf einem Mac OS verwenden, fügen Sie der mysql-Datenbank-Konfigurationsdatei die folgende Zeile hinzu

'unix_socket' => env ('DB_SOCKET', ''),

und auf Ihrer .env-Datei hinzufügen

DB_SOCKET =/Applications/MAMP/tmp/mysql/mysql.sock
14
Albert A

Eine weitere Lösung für alle, die ein Problem haben. Ich hatte alle Einstellungen korrekt, aber aus irgendeinem Grund wurden meine Änderungen nicht aktualisiert. Laravel speichert die Konfigurationsdatei tatsächlich (was ich völlig blöd finde).

Hier war meine Lösung nach dem Update der Configs:

php artisan config:clear

8
xtrimsky

Ich hatte dieses Problem. Beim Verbinden mit Sequel Pro muss ich 33060 als Port verwenden, aber in der .env-Datei muss es 3306 sein. Es wurde auf 3306 geändert und es hat funktioniert. 

6
Tom Kincaid

Verwenden Sie localhost anstelle von 127.0.0.1 (in Ihrer .env-Datei) und führen Sie dann den Befehl "php artisan config: cache" aus.

5
Lode Alaert

Ich hatte das gleiche Problem, probiere das funktioniert

DB_Host=localhost

Dies ist eine einfache Lösung. Ihre MySQL-Datenbank hat ihre Verbindung zum Server verloren. Wenn Sie einen lokalen Server ausführen, führen Sie dies in Ihrem Terminal aus:

mysqld

Dadurch wird Ihre Datenbank wieder verbunden. Dann (wenn Sie Homebrew verwenden), führen Sie Folgendes aus:

brew services start mysql

Dadurch wird Ihre Datenbank beim Anmelden automatisch verbunden.

4
SouthernBoy

In meinem Fall erschien dieser Fehler aus heiterem Himmel. Während ich auf diesen mysteriösen Fehler starrte, wurde mir klar, dass ich versuchte, den Befehl außerhalb von vm auszuführen.

2
bruddha

Ich habe das gleiche Problem, muss aber zwischen localhost und 127.0.0.1 wechseln.

Beim Betrachten der Website in einem Browser muss ich auf die von mir verwendete Datenbank zugreifen.

localhost

Aber wenn ich Migrationen oder Seeds im Terminal machen muss, muss ich sie verwenden.

127.0.0.1

Ich verwende derzeit eine vagrant , virtuelle Box und Homestead

Es wäre schön, nicht ständig zwischen den beiden wechseln zu müssen.

1
Paul

Es ist möglich, dass Ihr 'mysql' nicht gestartet wurde oder nicht an Port '3306'

1
gxet4n

Für mich hat es geholfen, die Anmeldeinformationen in Anführungszeichen zu setzen

DB_CONNECTION=mysql
DB_Host=localhost
DB_PORT=3306
DB_DATABASE='zzz'
DB_USERNAME='yyy'
DB_PASSWORD='XXX'
1
Max

Ich hatte ein ähnliches Problem und keine Vorschläge, die hier abgelegt wurden, haben mir geholfen. Das Problem, das behoben wurde, bestand darin, den Anwendungsnamen und den Datenbankhostnamen mit demselben Wert festzulegen. In meinem Fall funktioniert 127.0.0.1 korrekt.

APP_URL=127.0.0.1

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=zzz
DB_USERNAME=yyy
DB_PASSWORD=XXX
0
LukaszTaraszka
DB_CONNECTION=mysql
DB_Host=mysql
DB_PORT=8080
DB_DATABASE=flap_safety
DB_USERNAME=root
DB_PASSWORD=mysql

das oben angegebene ist meine .env

    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'Host' => env('DB_Host', 'mysql'),
       // 'port' => env('DB_PORT', '8080'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', 'mysql'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],

die oben angegebene Datei ist meine database.php. Ich habe gerade Port von database.php auskommentiert und es hat bei mir funktioniert.

0
sohaib tanveer

Wenn Sie Homestead verwenden, sollten Sie es mit dem Standard-Mysql-Port ausführen. Anstelle von DB_PORT=33060 sollten Sie DB_PORT=3306 in Ihrer .env-Datei verwenden. Denken Sie auch daran, Ihre php artisan migrate-Befehle in Ihrer Homestead-Installation auszuführen. Alles sollte in Ordnung sein.

Hoffentlich hilft das.

0
Lamin Barrow

Ich könnte sein, weil Sie vielleicht nicht neu gestartet haben PHP Handwerker seit langem

Also, nachdem Sie die Datenbank geändert und die Konfiguration vorgenommen haben: klar, Tinker funktioniert einwandfrei

Damit der Browser die neue DB-Verbindung wiederherstellt, müssen Sie sie erneut ausführen

pHP Handwerker dienen

0
shivanikoko

Okay, es scheint, dass der Host nicht das Problem ist, sondern tatsächlich der Port.

Es ist also eigentlich der Port 3306 für den Browsertest und noch für Terminal und Sequel Pro 33060 . Könnte es etwas mit dem Hinzufügen in Homestead.yaml zu tun haben und hier einstellen?

Beim Lesen des Setups in Bezug auf Laravel heißt es:

MySQL: 33060 → Weiterleiten an 3306

0
Paul

In meinem Fall hatte ich den gleichen Fehler mit Docker und der Trick war in der Einstellung in der .env file this DB_Host=db wobei db der Name des Containers ist, in dem der Datenbankserver ausgeführt wird.

Ich, ich benutze vagrant, aber ich führe PHP-Handwerker außerhalb der Box aus, also hat er grundsätzlich keine Erlaubnis

0
Marlon Bernal
  1. beenden Sie SQLD vom Task-Manager
  2. stoppen Sie MySQL in der xampp-Systemsteuerung und starten Sie es neu

wenn es immer noch das gleiche Problem auslöst, starte den Root-Ordner

php artisan cache:clear
php artisan config:cache
php artisan serve
  1. wenn das Problem weiterhin besteht, prüfen Sie, ob Sie mehrere Kopien von SQL Server verwenden, z. B. über die Ubuntu-App. Wenn dies der Fall ist, stoppen Sie den MySQL-Server in Ubuntu

    Sudo-Dienst MySQL stoppen

0
zabi

Problem gelöst.

Ich hatte das gleiche Problem und konnte es beheben, indem ich .env File 127.0.0.1 In localhost DB_Host = localhost Umwandelte.

Sie müssen nichts in config/database.php Ändern.

enter image description here

0
Ashwani Garg

Das einzige, was für mich gelöst wurde, war, die Verbindungsdetails in die Datei config/database.php anstelle der Datei .env zu setzen. Hoffe das hilft

0
Maxime Barber

Ich begegnete

SQLSTATE [HY000] [2002] Verbindung abgelehnt (SQL: Auswahl * aus Projekten)

Die Ursache war, dass ich den MySQL-Server nicht gestartet hatte.

Es kann hilfreich sein, zu überprüfen, ob MySQL als erster Schritt bei der Fehlerbehebung ausgeführt wird.

0
Steven

Ich fand, dass mein Server nur neu gestartet werden musste und "bam" es wurde behoben.

0
Chad C.

Nachdem Sie die gesamte Konfiguration in die .env-Datei gestellt haben, starten Sie RESTART IT, wenn Sie bereits PHP Artisan Server ausführen.