jongo: mysql verbindung

Hallo

Habe folgendes Script von self zum Einstieg gefunden:

my $DB_NAME = "";
my $DB_DSN = "DBI:mysql:database=$DB_NAME";
my $DB_USER = "";
my $DB_PASSWD = "";
print "Content-Type: text/html\n\n";
my $dbh = DBI->connect($DB_DSN, $DB_USER, $DB_PASSWD) or print "Fehler bei Datenbankverbindung: $!";

print "$dbh";

Es kommt doch bei:
  my $DB_NAME = "";  Datenbank Nr: DB6....
  my $DB_USER = "";  Benutzername: U2....
  my $DB_PASSWD = ""; Dass Passwort was ich ändern kann ?

or die habe ich auf or print geändert, weil eine fhlermeldung kam.

Nun kommt aber als die Meldung
Fehler bei Datenbankverbindung:

Vieleicht kann mir Jemand helfen.

Vielen Dank

jonko

  1. Hi,

    ich habe keine ahnung von PERL aber folgendes macht mich doch schon stutzig:

    my $DB_NAME = "";
    my $DB_DSN = "DBI:mysql:database=$DB_NAME";

    Die Variable $DB_NAME; ist doch leer, wie soll denn dann eine Verbindung aufgebaut werden? Oder hast du an dieser stelle einen Namen angegeben?

  2. Hallo!

    Es kommt doch bei:
      my $DB_NAME = "";  Datenbank Nr: DB6....
      my $DB_USER = "";  Benutzername: U2....
      my $DB_PASSWD = ""; Dass Passwort was ich ändern kann ?

    Jo. Stimmen diese Daten auch alle exakt mit dem überein, was du im mysql-Server eingestellt hast?

    or die habe ich auf or print geändert, weil eine fhlermeldung kam.

    Es sollte da ja auch eine Fehlermeldung kommen. Alles nach dem 'or' wird dann ausgeführt, wenn 'DBI->connect' fehlschlägt. 'die' bricht dabei das Skript ab, und gibt die Fehlermeldung + die hier übergebene Zeichenkette aus. Allerdings steht der Fehler hier nicht in $! sondern in $DBI::errstr. Versuche also mal folgendes:

      
    my $dbh = DBI->connect($DB_DSN, $DB_USER, $DB_PASSWD) or die 'Fehler bei Datenbankverbindung:'.$DBI::errstr;  
    
    

    Jetzt sollte exakt ausgegeben werden, was da nicht richtig ist.

    Grüße, Skrilax

    1. Hallo Skrilax

      print "Content-Type: text/html\n\n";
      my $dbh = DBI->connect($DB_DSN, $DB_USER, $DB_PASSWD) or die 'Fehler bei Datenbankverbindung:'.$DBI::errstr;

      Da kommt jezt die Fehlermeldung :
      Fehler bei Datenbankverbindung:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at b.cgi line 40.

      Und auf Line 40 ist der veränderte code.

      Ich weis wirhlich nicht was ich noch machen soll

      Vielen Dank

      jongo

      1. hmm, sieht ganz danach aus, dass er einfach keine Verbindung zum mysql-Server bekommt.

        • läuft der Server?
        • versuchst du vielleicht, über den root-Account Zugriff zu erhalten? In der Normaleinstellung ist der remote-zugriff auf den root-Account nämlich nicht erlaubt.

        Ansonsten weiß ich jetzt ehrlich gesagt auch erstmal nicht weiter.

        Grüße, Skrilax

        1. Skrilax

          Hallo Skrilax

          Also ich bin bei Strato, und weis nicht was root-Account ist, und wo es eingestellt wird.

          Ich habe dass Premium wo scripte mit datenbank erlaubt sind.

          Wird dass im Passwortgeschüzten Bereich irgendo eingestellt?

          mfg

          jongo

          1. Hallo!

            Also ich bin bei Strato, und weis nicht was root-Account ist, und wo es eingestellt wird.

            oha :-O. Ich dachte du probierst grad erstmal auf deinem eigenen Rechner rum, dort hätten diese Aussagen Gültigkeit gehabt...

            Funktionieren denn andere Methoden, auf die DB zuzugreifen? Irgendwelche Konfigurationsskripte, mit denen du z.B. die Tabellen in der DB erstellen kannst/erstellt hast? Ich weiß leider nicht, wie sowas i.A. gehandhabt wird.

            Grüße, Skrilax

            1. Also:
              Bei Strato, in meinem Kundenbereich dort sind die Angaben:

              Datenbank     :  fängt mit DB an und  geht nummeriert weiter.
              MySQL-Version :  4.0.24
              Benutzernam   :  da steht www.meinedomain

              mein Script liegt in Internet auf meine Homepage:

              www.meinedomain/cgi-bin/daten.cgi

              und soll mit der Datenbank MYSQL verbunden werden.

              mfg

              jongo

      2. print "Content-Type: text/html\n\n";
        my $dbh = DBI->connect($DB_DSN, $DB_USER, $DB_PASSWD) or die 'Fehler bei Datenbankverbindung:'.$DBI::errstr;

        Da kommt jezt die Fehlermeldung :
        Fehler bei Datenbankverbindung:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at b.cgi line 40.

        Bist du sicher, dass der Server auf localhost läuft?

        Struppi.

        --
        Javascript ist toll (Perl auch!)
  3. my $DB_DSN = "DBI:mysql:database=$DB_NAME";
    [...]
    my $dbh = DBI->connect($DB_DSN, $DB_USER, $DB_PASSWD) or print "Fehler bei Datenbankverbindung: $!";

    Hast du mal versuchst, Hostname und ggf. Port anzugeben, wie es in der Dokumentation zu DBI.pm beschrieben ist? Also so:

    my $usr = 'Name';  
    my $pwd = 'Passwort';  
    my $driver = 'mysql';  
    my $host = 'localhost';  
    my $dbn = 'Datenbank';  
    my $dbh = DBI->connect("DBI:$driver:$dbn:$host", $usr, $pwd) || die $DBI::errstr;
    

    So muss es funktionieren, wenn nicht, wende dich an den Support von Strato.

    Siechfred

    --
    Ich bin strenggenommen auch nur interessierter Laie. (molily)