fixle: probleme mit mySQL

Hallo

ich habe unter Suse11 xampp am laufen. nun möchte ich mich gerne über perl auf eine SQL DB zugreifen.
wenn ich mich an der Konsole einlogge auf die SQL DB mit
mysql stecker -u root -p
dann funktioniert das auch. Wenn ich jetzt aber versuche das script über den Browser aufzurufen dann bekomm ich im error_log folgenden Fehlereintrag:
[Wed Jul 23 13:30:25 2008] [error] DBI connect('stecker','root',...) failed: Access denied for user 'root'@'localhost' (using password: YES) at /opt/lampp/htdocs/xampp/steckersuche.pl line 12\n

hier mal mein script:

#!/usr/bin/perl -w

use DBI;
use DBD::mysql;

$dbname="stecker";
$username="root";
$pw="passwort";

$data1 = "DBI:mysql:stecker";
$data2 = DBI->connect("$data1", "$username", "$pw", { RaiseError => 1 }) || die("Kann DB nicht öffnen!");

Abfrage ( lesen )

#$sql="SHOW ROWS"; # SQL-Befehl
$sql=qq{select * from STGtab};

$abfr1=$data2->prepare($sql);
$abfr1->execute;

while (@ergf = $abfr1->fetchrow_array)
{
$count++;

foreach $index (@ergf)

{

#  ($VerweisID,$Kunde,$BR,$STGname,$Version,$Steckername)=split(/:/,$index);
#  @VerweisID[$count]=$VerweisID;

}

#print "Wert 1:  @ergf\n";
  # print "erste Stelle:".$ergf[0]." zweite Stelle:".$ergf[1]." dritte Stelle:".$ergf[2]." vierte Stelle:".$ergf[3]." \n";
@Kunde[$count]="<option>".$ergf[0]."</option>";
@BR[$count]="<option>".$ergf[1]."</option>";
}

$abfr1->finish;
$data2->disconnect;

kann mir jemand sagen warum ich mich wenn ich das script über Browser aufrufe mich nicht einloggen kann ?

achja, die Browsermeldung ist

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request....

  1. [Wed Jul 23 13:30:25 2008] [error] DBI connect('stecker','root',...) failed: Access denied for user 'root'@'localhost' (using password: YES) at /opt/lampp/htdocs/xampp/steckersuche.pl line 12\n

    Steht doch alles da. Entweder benutzt du das falsche Passwort, es ist für
    Root kein Passwort eingereichtet oder der Benutzer "root" hat grundsätzlich
    kein Recht auf die Datenbank zu verbinden.

  2. #!/usr/bin/perl -w

    use DBI;
    use DBD::mysql;

    Das ist nicht notwendig, dafür solltest du aber use strict verwenden, das schützt dich vor schwer zu findenen Fehlern.

    $dbname="stecker";
    $username="root";
    $pw="passwort";

    $data1 = "DBI:mysql:stecker";
    $data2 = DBI->connect("$data1", "$username", "$pw", { RaiseError => 1 }) || die("Kann DB nicht öffnen!");

    warum packst du die Variabeln in Anführungszeichen?
    und hier liegt der Grund, warum du im Browser nichts angezeigt bekommst, wenn das CGI Programm hier stirbt, dann fehlt dem Browser der Header und er zeigt dir die Meldung internal Error, es empfiehlt sich daher in der Entwicklung use CGI::Carp qw(fatalsToBrowser); einzubinden.

    while (@ergf = $abfr1->fetchrow_array)
    {
    $count++;

    foreach $index (@ergf)

    {

    #  ($VerweisID,$Kunde,$BR,$STGname,$Version,$Steckername)=split(/:/,$index);
    #  @VerweisID[$count]=$VerweisID;

    In dem Fall würde ich fetchrow_hashref empfehlen, dann sparst du dir hier das split.

    Struppi.

  3. Hallo!

    [Wed Jul 23 13:30:25 2008] [error] DBI connect('stecker','root',...) failed: Access denied for user 'root'@'localhost' (using password: YES) at /opt/lampp/htdocs/xampp/steckersuche.pl line 12\n

    Soviel ich weiß, ist in einer Standard-mysql-Installation der remote-Zugriff über den root-Account aus Sicherheitsgründen generell deaktiviert.

    Lege mal einen neuen Account an und versuche, über diesen auf dem mysql-Server zuzugreifen.

    Grüße, Skrilax

    --
    Metal mit mehr als 60 bpm ist was für Pussies.