/PHP - MySQL-Server versagt dem Apache das INSERT-Query
Fabian St.
- datenbank
0 Vinzenz0 Fabian St.0 Vinzenz
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.
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
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.
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
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.