Datenbankverbindung mal anderst

Hallo zusammen,

ich hänge hier vor einem kleinen Problem, das ich aber leider nicht in den Griff bekomme… :frowning:

Meine Seite die ich im moment mache, möchte ich auf eine Spezielle art confen etc. was mir mehr od. weniger auch gelungen ist. :smile:
Aber leider bekomme ich keine Verbindung zur MySQL Datenbank.

Hier mal die Fehlerausgabe:

Access denied for user ‚www-data‘@‚localhost‘ (using password: NO)

Hier die Sachen, die in dem Frameset included werden:

$root = dirname(__FILE__);
require_once(dirname(__FILE__) . „/secrets.php“);
require_once(dirname(__FILE__) . „/config.php“);
require_once(dirname(__FILE__) . „/globals.php“);

Und das hier, sollte dann die Datenbank geöffnet werden:

function dbconn() {
global $mysql_host, $mysql_user, $mysql_pass, $mysql_db, $HTTP_SERVER_VARS;
if (!@mysql_connect($mysql_host, $mysql_user, $mysql_pass)) {
switch (mysql_errno()) {
case 1040:
case 2002:
if ($_SERVER[„REQUEST_METHOD“] == „GET“)
die(" Die Serverlast ist momentan zu hoch. Versuche es erneut, bitte warten… „);
else
die(„Zu viele Benutzer. Bitte benutze den Aktualisieren-Button Deines Browsers, um es erneut zu versuchen.“);
default:
die(“[". mysql_errno() ."] dbconn: mysql_connect: ". mysql_error());
}
}
mysql_select_db($mysql_db)
or die('dbconn: mysql_select_db: ’ + mysql_error());
userlogin();
}

Aber leider geht das ned.
Weiss einer Rat? Wäre froh, wenn das so schnell wie möglich wer sagen/schreiben könnte, sonst werde ich ja nie fertig…

Hi!

Die Fehlermeldung besagt, dass der User „www-data“ nicht auf die Datenbank zugreifen darf. Also musst du dem User die Berechtigung geben oder einen anderen User nehmen.

Ob dein weiteres Script unten funktioniert weiss ich nicht, ist noch zu früh :wink:

Viele Grüße
André

Hallo

Hier mal die Fehlerausgabe:

Access denied for user ‚www-data‘@‚localhost‘ (using password: NO)

Hast du wirklich als User ‚www-data‘ und ein leeres Passwort angegeben? Dann solltest du noch mal nachschauen ob dieser Nutzer die notwendigen Rechte hat.

Wenn du eigentlich einen anderen Nutzer angegeben hast, ist vermutlich folgendes passiert:
Eine Verbindung zu ‚localhost‘ wird nicht über TCP, sondern über einen Unix-Socket hergestellt. (siehe auch http://de3.php.net/manual/de/function.mysql-connect.php ) Man kann einen Datenbankserver so konfigurieren, dass er für Verbindungen über Unix-Socket einfach den Benutzer nimmt, von dem das MySQL-Client-Programm ausgeführt wird. In diesem Fall wäre das PHP, ausgeführt von www-data. Deine Angaben zu User und Passwort werden einfach ignoriert.
Versuch es stattdessen mal mit 127.0.0.1

Gruß Johannes

ehrm, es ist richtig angegeben!
ich hab das teil von wo abgeschaut und dort ists genau gleich gemacht und funktioniert 1a…
und der name etc. stimmt! benutze das andere teil auch mit den gleichen logins etc. nur db name ist anderst, sonst alles beim gleichen!!

hm…
schau mal hier, das ist vom originalen:

$root = dirname(__FILE__);
require_once(dirname(__FILE__) . „/secrets.php“);
require_once(dirname(__FILE__) . „/config.php“);
require_once(dirname(__FILE__) . „/global.php“);

function dbconn() {
global $mysql_host, $mysql_user, $mysql_pass, $mysql_db, $HTTP_SERVER_VARS;
if (!@mysql_connect($mysql_host, $mysql_user, $mysql_pass)) {
switch (mysql_errno()) {
case 1040:
case 2002:
if ($_SERVER[„REQUEST_METHOD“] == „GET“)
die(" Die Serverlast ist momentan zu hoch. Versuche es erneut, bitte warten… „);
else
die(„Zu viele Benutzer. Bitte benutze den Aktualisieren-Button Deines Browsers, um es erneut zu versuchen.“);
default:
die(“[" . mysql_errno() . "] dbconn: mysql_connect: " . mysql_error());
}
}
mysql_select_db($mysql_db)
or die('dbconn: mysql_select_db: ’ + mysql_error());
userlogin();
}

und hier die secrets.php

$mysql_host = „localhost“;
$mysql_user = „****“;
$mysql_pass = „****“;
$mysql_db = „****“;

?>

und so verwende ich es ja auch…
nur beim gezeigten bsp. funzzelts so einwandfrei! login/register etc.!
aber bei mir wills ned!!

Wie wir schon gesagt haben, der User wird bei dir bestimmt nicht existieren und kann sich deswegen auch nicht zur DB connecten.
Hast du mal geschaut, ob du einen User „www-data“ hast, was für ein Passwort er hat und ob er überhaupt zur Datenbank connecten darf?

Also

Steht in der secrets.php der Nutzer ‚www-data‘ oder ein anderer?

Wenn da ein anderer steht, dann musst du als Host ‚127.0.0.1‘ verwenden.
Wenn das da wirklich so drin steht, dann musst du dem Nutzer Rechte für die gewünschte Datenbank geben.

Und: Du sagst, an einer anderen Stelle funktioniert der Code. Ist das auf dem gleichen oder auf einem anderen Server?

Johannes

Hallo,

Hier mal die Fehlerausgabe:
Access denied for user ‚www-data‘@‚localhost‘ (using password: NO)

ist eine Standartfehlermeldung wenn zu einer Datenbankverbindung keine Login informationen mitgegeben werden. (ausgehend von einer Standart Apache installation)

Hier die Sachen, die in dem Frameset included werden:

$root = dirname(__FILE__);
require_once(dirname(__FILE__) . „/secrets.php“);
require_once(dirname(__FILE__) . „/config.php“);
require_once(dirname(__FILE__) . „/globals.php“);

ist dieser teil in der Gleichen Datei wie die Function dbconn?
du hattest oben nur was vom Frameset geschrieben, wenn die Daten nur im Frameset includiert sind und nicht in den eigentlichen frames dann hast du da in den Frames auch kein zugriff drauf.

Gruß

die includierten sind in der gleichen datei wie das dbconn()

setz mal ein error_reporting(E_ALL) und für das script dann nochmal aus