# Can't connect to local MySQL server through socket



## Sweetlover (29. August 2003)

Ich versuche seit paar Stunden ein GB zu coden, was mir allerdings bisher gut gelungen ist. Nun wollte ich eine Funktion zum Löschen der Einträge einbauen, aber dann ein MySQL Fehler: "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)".

Weiß mir da jemand zu helfen?


```
<?php

// Datei: admin.php
// Hier wird alles included (SQL Daten, Design, usw...)

// Als ich das eingefügt habe, kam der Fehler...
if($deleintrag){
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
// -- ENDE -- der Rest funktioniert!

if($connect_sql){
    mysql_select_db($sql_database);
    $hole_eintrag_id = "SELECT * FROM gb ORDER BY Datum DESC;";
    $ergebnis = mysql_query($hole_eintrag_id) OR die(mysql_error());
    echo"<p>Einträge: ".mysql_num_rows($ergebnis)."</p>\n";
    echo"<hr color=\"".$hrcolor."\">\n";
    if(mysql_num_rows($ergebnis)){
        while($row = mysql_fetch_assoc($ergebnis)){
            echo "<table width=\"95%\" id=\"gb_maintable\">";
            echo "  <tr>";
            echo "    <td id=\"gb_datum\">";
            echo "<a href=\"admin.php?deleintrag=true&id=".$row['ID']."\"><img src=\"delete.gif\"></a>";
            echo "<b><a href=\"mailto:".$row['Email']."\">".$row['Name']."</b></a> schrieb ".$row['Datum']."<br>";
            echo "<a href=\"".$row['Homepage']."\" target=\"_blank\">Homepage</a> - ICQ: ".$row['ICQ']."<br><br>";
            echo "    </td>";
            echo "	</tr>";
            echo "	<tr>";
            echo "    <td colspan=\"2\" id=\"gb_inhalt\">";
            echo nl2br($row['Inhalt']);
            echo "	  </td>";
            echo "  </tr>";
            echo "</table><br>";
            echo "<hr color=\"".$hrcolor."\"><br>";
        }
    } else {
        echo "<p>Keine Einträge vorhanden.</p>\n";
    }
} else {
    echo "<p>Es konnte keine Verbindung aufgebaut werden.</p>";
}
?>
```


----------



## Trash (29. August 2003)

ähm ob das den fehler löst weiß ich nicht...aber ich hab noch nie in einer if schleife return; verwendet...was macht das da ? es ist ja keine funktion...


----------



## Sweetlover (29. August 2003)

das return(); ist da, damit der genau dort aufhört, falls die variable $deleintrag existiert.. er soll nur einen Gb eintrag löschen und dann schreiben: "gelöscht", das wars

PS: aber auch wenn ich das return raushaue, kommt der gleiche fehler


----------



## Trash (29. August 2003)

naja wenn du eine var hast die $deleintrag heisst und dies mit einer if schleife überprüfst hört er eh am ende auf..  folgendes: bist du dir sicher das die DB verbindung hergestellt ist...wenns local is ... läuft der mysql server ?

ich habe gerade dieses gefunden ob das hilft ist fraglich:

Problem: Der mysql-Client beendet sich mit mysql:ERROR 2002: Can't connect to local MySQL-Server through socket 'var/lib/mysql/mysql.sock'. Auch eine Änderung in der /etc/my.cnf an eine andere Stelle ändert nichts. Die Änderung in der Sektion des Clients wird nicth beachtet. Erstaunlicherweise kann man als root auf Mysql zugreifen.


Lösung: Die Datei /etc/my.cnf hat die Berechtigung 600 und die Gruppe daemon. 
Lösung 1: chmod 640 /etc/my.cnf und den enstprechenden Nutzer die Gruppe daemon zuordnen. 
Lösung 2: chmod 644 /etc/my.cnf damit alle Nutzer des Systems auf Mysql zugreifen können.


----------



## Sweetlover (29. August 2003)

also ohne die obere if abfrage läuft die mysql datenbank reibungslos

dann zeigt er mir wie gewünscht alle GB einträge



sobald ich aber löschen will (also die obere if abfrage wieder einfüge)
dann auf dieses bildchen zum löschen klicke:

```
echo "<a href=\"admin.php?deleintrag=true&id=".$row['ID']."\"><img src=\"delete.gif\"></a>";
```

erscheint der fehler.. ich hab auch schon bei google nachgeguckt, aber nirgendwo außer das hier (was du schon geschrieben hast)...

Lösung: Die Datei /etc/my.cnf hat die Berechtigung 600 und die Gruppe daemon. 
Lösung 1: chmod 640 /etc/my.cnf und den enstprechenden Nutzer die Gruppe daemon zuordnen. 
Lösung 2: chmod 644 /etc/my.cnf damit alle Nutzer des Systems auf Mysql zugreifen können.

...gibt es eine Andeutung auf eine Lösung.. (


----------



## Patrick Kamin (30. August 2003)

*-*

Also bei deiner zweiten if-Anweisung wählst du vorher noch die Datenbank aus (mysql_select_db() ).

Vielleicht solltest du das schon vorher machen, dann klappt das auch mit dem ersten Query


----------



## Sweetlover (30. August 2003)

mysql_select_db(); hab ich nun mit einer ganz neuen abfrage gemacht

if($connect_sql){
mysql_select_db($sql_database);

HIER DER QUELLTEXT OBEN ohne mysql abfragen außer queries!

}


funktioniert immernoch nicht (wieder NUR die obere abfrage macht probleme...)


----------



## Sweetlover (30. August 2003)

also ich kapiere den fehler nicht ganz.. warum ausgerechnet DIESER fehler? die abfrage oben ist doch SOOO was von simpel.. 

es müsste doch eigentlich klappen..


----------



## cybergnom (30. August 2003)

```
if($deleintrag){
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
```
 Hier hast Du noch keine DB ausgewählt! Das passiert erst, falls die zweite if-Anwesiung zutrifft.
Und es ist prinzipiell schwer, eine query auf ne unbekannte DB zu machen 

Also einfach mysql_select_db hier hinzufügen:


```
if($deleintrag){
mysql_select_db($sql_database);
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
```
 dann klappt's auch mit dem Löschen 

MfG
cyber


----------



## Christian Fein (30. August 2003)

Kenne diesen Fehler:

Benenne einfach mal diese Datei um
/var/run/mysqld/mysqld.sock


$ mv /var/run/mysqld/mysql.sock /var/run/mysqld/mysql.sock~

Danach sollte er eine neue mysql.sock erstellen. Dieser fehler kann mit einem Rechteproblem mit eben dieser Datei zusammenhängen.

Ist das bei deiner lokalen LAMP konfiguration oder beim Hoster?


----------



## cybergnom (30. August 2003)

Hallo Christian,

wenn alles bis auf den ersten Teil funktioniert, sollte doch eigentlich kein Rechte-Problem vorliegen, oder?

MfG
cyber


----------



## Christian Fein (30. August 2003)

> _Original geschrieben von cybergnom _
> *Hallo Christian,
> 
> wenn alles bis auf den ersten Teil funktioniert, sollte doch eigentlich kein Rechte-Problem vorliegen, oder?
> ...



richtig, dann sollte gar nichts funktionieren 

Ich glaube ich sollte mir angewöhnen nicht nur die Überschrift zu lesen


----------



## Sweetlover (30. August 2003)

ich habe die mysql datenbank bereits vorher ausgewählt.. es funktioniert immernoch nicht und der gleiche fehler kommt ^^

hier nochmal der neue quelltext (der obere und untere quelltext ist die index.php und der mittlere wird per $_GET['section'] included:


```
<?php
if($connect_sql){
mysql_select_db($sql_database);
```


```
<?php
// DIE TAGS STEHEN NUR DA, DAMIT ES FARBIG WIRD
include("../chatynet.css");
include("../config/settings.php");
include("../config/config.php");

if($deleintrag){
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
    $hole_eintrag_id = "SELECT * FROM gb ORDER BY Datum DESC;";
    $ergebnis = mysql_query($hole_eintrag_id) OR die(mysql_error());
    echo"<p>Einträge: ".mysql_num_rows($ergebnis)."</p>\n";
    echo"<hr color=\"".$hrcolor."\">\n";
    if(mysql_num_rows($ergebnis)){
        while($row = mysql_fetch_assoc($ergebnis)){
            echo "<table width=\"95%\" id=\"gb_maintable\">";
            echo "  <tr>";
            echo "    <td id=\"gb_datum\">";
            echo "<a href=\"admin.php?deleintrag=true&id=".$row['ID']."\"><img src=\"delete.gif\"></a>";
            echo "<b><a href=\"mailto:".$row['Email']."\">".$row['Name']."</b></a> schrieb ".$row['Datum']."<br>";
            echo "<a href=\"".$row['Homepage']."\" target=\"_blank\">Homepage</a> - ICQ: ".$row['ICQ']."<br><br>";
            echo "    </td>";
            echo "	</tr>";
            echo "	<tr>";
            echo "    <td colspan=\"2\" id=\"gb_inhalt\">";
            echo nl2br($row['Inhalt']);
            echo "	  </td>";
            echo "  </tr>";
            echo "</table><br>";
            echo "<hr color=\"".$hrcolor."\"><br>";
        }
    } else {
        echo "<p>Keine Einträge vorhanden.</p>\n";
    }
// DIE TAGS STEHEN NUR DA, DAMIT ES FARBIG WIRD
?>
```


```
<?php
} else {
    echo "<p>Es konnte keine Verbindung aufgebaut werden.</p>";
}
?>
```


----------



## cybergnom (31. August 2003)

Du musst in dem Teil der included wird die Datenbank nochmal auswählen.
Imo wird eine eingebundene Datei nämlich seperat abgearbeitet. D.h. Du kannst z.B. in der index.php deklarierte Variablen nicht einfach in der includedten Datei verwenden. Also musst Du auch die Auswahl der Datenbank nocheinaml seperat vornehmen.

MfG
cyber


----------



## Sweetlover (31. August 2003)

hatte ich ja vorher.. hab danach die DB am anfang ausgewählt.. hat nicht funktioniert..


----------



## cybergnom (31. August 2003)

Ne... hattest Du nur indirekt.
Du hast die DB in der ersten if-Anwesiung nicht ausgewählt:

```
// Als ich das eingefügt habe, kam der Fehler...
if($deleintrag){
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
// -- ENDE -- der Rest funktioniert!
```
 wo hast Du hier eine DB ausgewählt?

Das muss heißen:

```
// Als ich das eingefügt habe, kam der Fehler...
if($deleintrag){
mysql_select_db($sql_database);
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
// -- ENDE -- der Rest funktioniert!
```
 dann passt's!

MfG
cyber


----------



## Sweetlover (31. August 2003)

hatte ich zwar hier nicht stehen als quelltext aber ausprobiert.. will leider immernoch nicht.. 

außerdem werden die GB Einträge ja angezeigt, obwohl das ding included wird


----------



## cybergnom (31. August 2003)

häng mal dein ganzes Script hier dran... im Zusammenhang lässt sich der Fehler vielleicht besser finden...

MfG
cyber


----------



## Sweetlover (31. August 2003)

Index.php


```
<html>
<head>
<title></title>
<?php
include("../chatynet.css");
include("../config/settings.php");
include("../config/config.php");
?>
</head>
<?php
if($connect_sql){
mysql_select_db($sql_database);
?>
<body>
// Hier wird in einer Tabelle dann die admin.php included //
</body>
<?php
} else {
    echo "<p>Es konnte keine Verbindung aufgebaut werden.</p>";
}
?>
</html>
```


Admin.php

```
<?php
if($deleintrag){
// Vorsichtshalber hab ich die mysql_select_db abfrage schonmal eingebaut
mysql_select_db($sql_database);
// Vorsichtshalber hab ich die mysql_select_db abfrage schonmal eingebaut
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
// Vorsichtshalber hab ich die mysql_select_db abfrage schonmal eingebaut
    mysql_select_db($sql_database);
// Vorsichtshalber hab ich die mysql_select_db abfrage schonmal eingebaut
    $hole_eintrag_id = "SELECT * FROM gb ORDER BY Datum DESC;";
    $ergebnis = mysql_query($hole_eintrag_id) OR die(mysql_error());
    echo"<p>Einträge: ".mysql_num_rows($ergebnis)."</p>\n";
    echo"<hr color=\"".$hrcolor."\">\n";
    if(mysql_num_rows($ergebnis)){
        while($row = mysql_fetch_assoc($ergebnis)){
            echo "<table width=\"95%\" id=\"gb_maintable\">";
            echo "  <tr>";
            echo "    <td id=\"gb_datum\">";
            echo "<a href=\"admin.php?deleintrag=true&id=".$row['ID']."\"><img src=\"delete.gif\"></a>";
            echo "<b><a href=\"mailto:".$row['Email']."\">".$row['Name']."</b></a> schrieb ".$row['Datum']."<br>";
            echo "<a href=\"".$row['Homepage']."\" target=\"_blank\">Homepage</a> - ICQ: ".$row['ICQ']."<br><br>";
            echo "    </td>";
            echo "	</tr>";
            echo "	<tr>";
            echo "    <td colspan=\"2\" id=\"gb_inhalt\">";
            echo nl2br($row['Inhalt']);
            echo "	  </td>";
            echo "  </tr>";
            echo "</table><br>";
            echo "<hr color=\"".$hrcolor."\"><br>";
        }
    } else {
        echo "<p>Keine Einträge vorhanden.</p>\n";
    }
?>
```


----------



## cybergnom (31. August 2003)

Wo wird die Variable $sql_database deklariert?


----------



## Sweetlover (31. August 2003)

include("../config/config.php");

hier


----------



## cybergnom (31. August 2003)

aha... wie gesagt, wenn Du was includest, kannst Du die Variablen nicht einfach übernehmen.

D.h. entweder die admin.php nicht includen sondern in die index.php integrieren, oder die includes von der index.php auch in der admin.php durchführen.

MfG
cyber


----------



## Sweetlover (31. August 2003)

ich hab jetzt die var database_sql aus dem include rausgehauen und in die admin.php reingetan..

immernoch der gleiche fehler.. da stimmt doch was nicht.. es ist doch soo ne simple abfrage ^^


----------



## eva4tinto (29. Juni 2009)

Hallo,

ich hatte das Problem auch, als ich mit meiner kleinen php-MySQL-Applikation umgezogen bin. Nach 12 Stunden fluchen und nur vertröstende Antworten vom Support, habe ich irgendwo gelesen, dass man die php-Version per .htaccess umswitchen kann. Habe testweise eine .htaccess erstellt und nur folgendes hineingeschrieben:

AddType x-mapp-php5 .php

Nach dem Uploaden funktioniert nun alles. Offensichtlich war beim Provider per default PHP4 eingestellt, aber durch die .htaccess hat dann alles wieder funktioniert wie vorher als das Ding auf einem Server lag, auf dem anscheinend per default php5 eingestellt war.

Schöner Gruß

Eva


----------



## Dr Dau (29. Juni 2009)

Hallo!


eva4tinto hat gesagt.:


> Nach 12 Stunden fluchen und nur vertröstende Antworten vom Support, habe ich irgendwo gelesen, dass man die php-Version per .htaccess umswitchen kann.


Funktioniert natürlich nur wenn auch mehrere PHP-Versionen installiert sind. 

Ich habe mir den aus dem Leichenkeller ausgebuddelten Thread jetzt zwar nicht durchgelesen, aber das Problem dürfte hier ein anderes sein.

Gruss Dr Dau


----------



## mike_abc123 (10. April 2010)

hatte das selbe problem ... bei mir war einfach nur die hdd komplett voll ...

lösung: 
platz machen und  
sudo /etc/init.d/mysql start


----------

