Fabian St.: /PHP - MySQL-Server versagt dem Apache das INSERT-Query

Hi!

Im Moment schreibe ich mein Gästebuch auf PHP - MySQL - Basis neu. Nun war ich gerade dabei, die Insert-Funktion fertig zu stellen, als ich dabei die folgende Fehlermeldung bekam:

----------------------------------------------------------------------
Warning: mysql_query() [function.mysql-query]: Access denied for user: 'apache@localhost' (Using password: NO) in /home/fabi/public_html/s/test/add.php on line 89

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/fabi/public_html/s/test/add.php on line 89
Access denied for user: 'apache@localhost' (Using password: NO)
----------------------------------------------------------------------

Anscheinend hat der Apache-Deamon nicht genüg Rechte folgenden INSERT-Query auszuführen:

$sql = "INSERT
             INTO guestbook
                   (name, email, homepage, nachricht, ip)
             VALUES
                                          ('".addslashes(htmlentities($_POST['name']))."',
                          '".addslashes(htmlentities($_POST['email']))."',
                          '".addslashes(htmlentities($_POST['www']))."',
                          '".addslashes(htmlentities($_POST['message']))."',
                          '".$_SERVER['REMOTE_ADDR']."')";

Das ganze läuft unter Gentoo Linux mit Apache 2.0.52, PHP 5.0.2 sowie MySQL 4.0.21. Wenn ich den Query direkt in PHPMyAdmin eingebe, funktioniert er.

Wie kann ich dem Indianer genügend Rechte geben, um den Query auszuführen?

Grüße,
Fabian St.

P.s. Das Holen des Inhalts, also SELECT foobar ..., funktioniert hingegen.

--
Endlich online: http://fabis-site.net
--> XHTML, CSS, PHP-Formmailer, Linux
Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
  1. Hallo Fabian,

    Warning: mysql_query() [function.mysql-query]: Access denied for user: 'apache@localhost' (Using password: NO) in /home/fabi/public_html/s/test/add.php on line 89
    Anscheinend hat der Apache-Deamon nicht genüg Rechte folgenden INSERT-Query auszuführen:

    Der Unix-Benutzer apache hat mit dem MySQL-Benutzer apache überhaupt nichts zu tun. MySQL hat eine eigene Benutzerverwaltung, siehe Handbuch.

    Das ganze läuft unter Gentoo Linux mit Apache 2.0.52, PHP 5.0.2 sowie MySQL 4.0.21. Wenn ich den Query direkt in PHPMyAdmin eingebe, funktioniert er.

    Schau mal nach, unter welchem MySQL-Benutzer PHPMyAdmin arbeitet :-)

    Wie kann ich dem Indianer genügend Rechte geben, um den Query auszuführen?

    Der Webserver benötigt überhaupt keine Rechte. Der Benutzer, der sich authentifiziert, benötigt diese. Ob dieser 'apache' oder 'sonstwie' heißt, ist gleichgültig. In Deinem Skript gibst Du einen Benutzer an. Dieser muß in der MySQL-Benutzerdatenbank vorhanden sein und über genügend Rechte verfügen. Das kannst Du übrigens auch mit PHPMyAdmin überprüfen.

    P.s. Das Holen des Inhalts, also SELECT foobar ..., funktioniert hingegen.

    Sieht so aus, als hättest Du diesen Benutzer angelegt und ihm nicht genügend Rechte erteilt.

    Freundliche Grüsse,

    Vinzenz

    1. Hi Vinzenz!

      Der Unix-Benutzer apache hat mit dem MySQL-Benutzer apache überhaupt nichts zu tun. MySQL hat eine eigene Benutzerverwaltung, siehe Handbuch.

      Soweit so klar...

      Das ganze läuft unter Gentoo Linux mit Apache 2.0.52, PHP 5.0.2 sowie MySQL 4.0.21. Wenn ich den Query direkt in PHPMyAdmin eingebe, funktioniert er.

      Schau mal nach, unter welchem MySQL-Benutzer PHPMyAdmin arbeitet

      Der MySQL-Benutzer ist root @ localhost.

      Wie kann ich dem Indianer genügend Rechte geben, um den Query auszuführen?

      Der Webserver benötigt überhaupt keine Rechte. Der Benutzer, der sich authentifiziert, benötigt diese. Ob dieser 'apache' oder 'sonstwie' heißt, ist gleichgültig. In Deinem Skript gibst Du einen Benutzer an. Dieser muß in der MySQL-Benutzerdatenbank vorhanden sein und über genügend Rechte verfügen. Das kannst Du übrigens auch mit PHPMyAdmin überprüfen.

      Hier fängts langsam an, wo ich nicht mehr weiter komme. Wo gebe ich in meinem Skript denn den Benutzer an?

      Sieht so aus, als hättest Du diesen Benutzer angelegt und ihm nicht genügend Rechte erteilt.

      Das glaube ich auch ;-)

      Freundliche Grüsse,

      Vinzenz

      Grüße,
      Fabian St.

      --
      Endlich online: http://fabis-site.net
      --> XHTML, CSS, PHP-Formmailer, Linux
      Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
      1. Hallo Fabian,

        Schau mal nach, unter welchem MySQL-Benutzer PHPMyAdmin arbeitet

        Der MySQL-Benutzer ist root @ localhost.

        [...]

        Hier fängts langsam an, wo ich nicht mehr weiter komme. Wo gebe ich in meinem Skript denn den Benutzer an?

        Du solltest http://www.php.net/manual/de/function.mysql-connect.php lesen und mit der Suchfunktion Deines Editors (dateiübergreifend, wenn möglich) nach 'mysql_connect' suchen, es sei denn Du verwendest die PEAR-Klassen.

        Freundliche Grüsse,

        Vinzenz

        1. Hi Vinzenz!

          Du solltest http://www.php.net/manual/de/function.mysql-connect.php lesen und mit der Suchfunktion Deines Editors (dateiübergreifend, wenn möglich) nach 'mysql_connect' suchen, es sei denn Du verwendest die PEAR-Klassen.

          Klar, das ich da nicht selber draufgekommen bin *grrrr*.

          Ich benutze für das Herauslesen und Schreiben der Daten zwei eigene Funktionen - bei der die für das Schreiben zuständig ist, habe ich mich beim Passwort vertippt :-(

          Danke für deine Hilfe, Vinzenz!

          Grüße,
          Fabian St.

          --
          Endlich online: http://fabis-site.net
          --> XHTML, CSS, PHP-Formmailer, Linux
          Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)