Herstellen einer Verbindung zur Staging-Datenbank von einer lokalen Umgebung aus - Laravel 5

8

Ziel

Lokal auf meinem Mac OS versuche ich, eine Verbindung zu meiner Staging-Datenbank herzustellen, die auf meiner Ubuntu-VM ausgeführt und gehostet wird.

Schritte

In meinem config/database.php

%Vor%

In meiner .env habe ich

%Vor%

Ich bin nicht sicher, was zu PUT als mein UNIX_SOCKET seit database.php es brauchen.

Ich habe immer

bekommen %Vor%

Ich glaube das, weil mein Pfad zu UNIX_SOCKET falsch ist.

Fragen

Wie würde man so etwas konfigurieren und konfigurieren?

Wie würde man das weiter machen und debuggen?

Ich öffne mich in diesem Moment für irgendwelche Vorschläge.

Irgendwelche Hinweise / Vorschläge / Hilfe dazu werden sehr geschätzt!

Aktualisieren

Basieren Sie auf der Antwort von @dparoli . Ich aktualisiere meine Datenbankkonfiguration nicht mehr mit UNIX_SOCKET .

%Vor%

Jetzt habe ich

  

PDOException in Connector.php Zeile 49:   SQLSTATE [HY000] [2002] Zeitüberschreitung der Operation

Ich habe versucht, mehr über die Einstellungen meiner staging VM

zu erfahren

sshd_config

Wird /etc/ssh/sshd_config überhaupt irgendwelche Rollen spielen? Liegt es daran, dass ich die Passwortanmeldung deaktiviert habe und nur die Anmeldung über den öffentlichen Schlüssel zuließ?

Ich habe beide versucht

PasswordAuthentication nein

und

PasswordAuthentication ja

netstat

Ich habe netstat -ln ausgeführt, ich habe

%Vor%

Ich habe 0 0.0.0.0:3306 dort gesehen.

php.ini

%Vor%

/etc/mysql/my.cnf

%Vor%

Ergebnis

  

PDOException in Connector.php Zeile 49:   SQLSTATE [HY000] [2002] Zeitüberschreitung der Operation

Wie kann ich das stoppen?

Was kann ich noch überprüfen oder versuchen?

    
ihue 17.03.2017, 17:03
quelle

4 Antworten

1

Sie versuchen, sich über einen Unix-Socket mit einem anderen Host zu verbinden. Dies ist nicht möglich, da Sockets normalerweise nur für das System sichtbar sind, auf dem sie erstellt wurden.

Damit Ihr staging env funktioniert, müssen Sie die unix_socket config-Zeile auskommentieren und einen Port hinzufügen:

%Vor%

Und konfigurieren Sie mysql, um auf diesen Port zu hören.

    
dparoli 17.03.2017, 23:13
quelle
1

Dies scheint in erster Linie ein Netzwerkproblem zwischen dem Host und Gast zu sein.

  • Lassen Sie uns zuerst den Host mit dem Guest (VM) sprechen
    • Melden Sie sich bei der VM an (vorausgesetzt, Sie verwenden VirtualBox, andere VMs sind ähnlich)
    • Führen Sie ifconfig aus und notieren Sie die IP-Adresse. Es wird etwa 10.0.2.5
    • sein
    • Gehe zum VM-Instanzfenster - & gt; Menü - & gt; Netzwerkadapter:
      • Adapter auf NAT setzen
      • Klicken Sie unten auf "port forwarding"
      • Erstellen Sie einen neuen Datensatz (klicken Sie auf das + Symbol auf der rechten Seite)
      • Legen Sie Host IP = 127.0.0.1
      • fest
      • Geben Sie für die IP-Adresse des Gastes den Wert ein, den Sie zuvor erhalten haben (10.0.2.5 - Ihre IP kann anders sein)
      • In beiden Fällen für den Port 3306
    • Klicken Sie zweimal auf OK, und Sie sollten die Einstellungen verlassen und alles fertig haben
  • Überprüfen Sie, ob Sie eine Verbindung zur MySQL-Instanz über die Befehlszeile auf der VM herstellen können
    • Öffnen Sie ein Terminalfenster auf der VM
    • Führe diesen Befehl aus mysql -hlocalhost -ujohn -p
    • Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden, und Sie sollten eine Verbindung herstellen können. Wenn nicht, versuchen Sie Folgendes
      • mysql -h127.0.0.1 -ujohn -p
      • Wenn Sie immer noch keine Verbindung herstellen können, vergewissern Sie sich, dass Sie das richtige Passwort haben
    • Sobald Sie in der Lage sind, sich lokal zu verbinden, ist es an der Zeit, eine Verbindung von Host (Mac)
    • herzustellen
  • Verwenden Sie den folgenden Befehl:
    • mysql -h127.0.0.1 -ujohn -p
    • Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden
  • Wenn Sie immer noch keine Verbindung herstellen können, versuchen Sie, die Firewall auf Guest / Ubuntu
  • zu deaktivieren
thatsaru 24.03.2017 15:14
quelle
1

Was Sie versuchen könnten, wenn Sie SSH Zugriff auf die VM (oder eine andere Fernbedienung) haben, dann können Sie versuchen, die Verbindung über SSH :

weiterzuleiten %Vor%

Jetzt fungiert der Port 3307 auf Ihrem lokalen Rechner als Port 3306 auf dem entfernten Rechner. In Ihrer Konfigurationsdatei können Sie dann

gehen %Vor%

Der Nachteil dieses Ansatzes besteht darin, dass Sie eine Terminal-Sitzung einrichten und ausführen müssen, wenn Sie Ihre lokale Umgebung verwenden möchten.

    
Spholt 24.03.2017 17:07
quelle
1

Die Zeitüberschreitung der Operation wird höchstwahrscheinlich von der Firewall verursacht. Sie können dies beheben, indem Sie diese Befehle auf Ihrer VM ausführen:

%Vor%

Falls dies nicht funktioniert, überprüfen Sie, ob Verkehr auf Port 3306 kommt, indem Sie diesen Befehl verwenden:

%Vor%

Ersetzen Sie eth1 durch Ihre Netzwerkschnittstelle, die Sie mit diesem Befehl finden können:

%Vor%     
Amr El-Naggar 28.03.2017 13:59
quelle