MySQLDumper-Board Forum Index Follow me on Twitter

Portal  •   Forum  •  Downloads  •  Profile  •  Search   •  Register  •  Log in to check your private messages  •  Log in  •  


 Perl MySQL Authentifizierung

Post new topicReply to topic
Author Message
stoby89
knows MySQLDumper
knows MySQLDumper





Joined: 04 May 2011
Posts: 3


blank.gif

PostPosted: 2011-05-04, 16:07    Perl MySQL Authentifizierung Reply with quoteBack to top

Jetzt war ich gerade dabei verzweifelt einen ewig langen Beitrag zu schreiben, da mein Login via Perl nicht funktioniert und was ich schon alles versucht habe, als mir beim weiteren Experimentieren an der Konfiguration der Fehler aufgefallen ist.

DBI connect('einedatenbank:localhost:3306','mysqldumper-benutzer',...) failed: Access denied for user 'mysqldumper-benutzer'@'localhost' (using password: YES) at crondump.pl line 340


Es war die Tatsache, dass in der Konfiguration für das Passwort doppelte Anführungszeichen anstatt einfache verwendet wurden. Das hat beim Interpretieren des Codes die Folge, dass das Backslash-Zeichen als Startzeichen für Sonderzeichen verwendet wird (zum Beispiel \n für den Zeilenumbruch), sodass nachfolgender Text fehlinterpretiert wird.
Bedeutet: Wenn man komplexe Passwörter mit Sonderzeichen verwendet, bei denen ein Backslash vorkommt, kann sich der MySQLDumper nicht mehr am MySQL Server via Perl authentifizieren. Komischerweise kommt PHP hingegen damit klar, denn der Zugriff mit den selben Daten klappt über die Weboberfläche.

Da kann man nämlich lange an den Berechtigen spielen, wenn einfach nur bei der Authentifizierung das Passwort falsch gesendet wird.

Daher der Tipp an die Entwickler: Im nächsten Release die doppelten Anführungszeichen beim dbpass in der Konfiguration (config.php und work/mysqldumper.php) anpassen.

OfflineView user's profileSend private message    
Anzeigen











Posted:    Anzeigen Back to top


    
DSB
Developer
Developer




Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg


germany.gif

PostPosted: 2011-05-04, 20:40    (No subject) Reply with quoteBack to top

Ich kann Deiner Argumentation nicht so ganz folgen.
Die Konfiguration, die von Perl benutzt wird, ist die Datei mysqldumper.conf.php und nicht mysqldumper.php (die wird nur von PHP benutzt). Dort werden beim Speichern Sonderzeichen maskiert (siehe inc/functions.php ab Zeile 320). Es kann höchsten sein, dass Du noch eines benutzt, welches wir hier noch nicht berücksichtigt haben. Den Baskslash haben wir allerdings drin.
Check das bitte mal.

_________________
Gruß / Greetings, DSB

Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.

OfflineView user's profileSend private messageSend e-mailVisit poster's website    
stoby89
knows MySQLDumper
knows MySQLDumper





Joined: 04 May 2011
Posts: 3


blank.gif

PostPosted: 2011-05-10, 22:14    (No subject) Reply with quoteBack to top

« DSB » wrote:
Ich kann Deiner Argumentation nicht so ganz folgen.
Die Konfiguration, die von Perl benutzt wird, ist die Datei mysqldumper.conf.php und nicht mysqldumper.php (die wird nur von PHP benutzt).

Das ist korrekt. Da hat sich ein kleiner fehler eingeschlichen. In der mysqldumper.php ist die Konfiguration korrekt. Die Konfigurationsdaten werden in einfachen Anführungszeichen dort gesetzt. Deswegen funktioniert der Zugriff auch in PHP.
In der mysqldumper.conf.php hingegen, werden die Konfigurationsdaten in doppelten Anführungszeichen gespeichert, sodass es beim Verwenden von Sonderzeichen (insb. beim Backslash) zu Fehlern kommt. Deswegen schlug bei mir der Zugriff über Perl fehl und über PHP nicht.

« DSB » wrote:
Dort werden beim Speichern Sonderzeichen maskiert (siehe inc/functions.php ab Zeile 320). Es kann höchsten sein, dass Du noch eines benutzt, welches wir hier noch nicht berücksichtigt haben. Den Baskslash haben wir allerdings drin.

Ich habe die Zeilen mal kurz überflogen und eigentlich müssten diese richtig arbeiten. Ich glaube aber, dass die Funktion evt. nirgends aufgerufen wird, weil bei mir in den beiden Konfigurationsdateien unter /work/config keine Maskierung zu finden ist.

Ich verwende übrigens die neueste Version, die es am 04.05. zu downloaden gab.

OfflineView user's profileSend private message    
DSB
Developer
Developer




Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg


germany.gif

PostPosted: 2011-05-10, 22:48    (No subject) Reply with quoteBack to top

« stoby89 » wrote:
Ich habe die Zeilen mal kurz überflogen und eigentlich müssten diese richtig arbeiten. Ich glaube aber, dass die Funktion evt. nirgends aufgerufen wird, weil bei mir in den beiden Konfigurationsdateien unter /work/config keine Maskierung zu finden ist.


Doch wird sie. In der gleichen Datei sorgt die Funktion WriteCronscript() (ab Zeile 355) dafür, dass die Perl-Konfiguration geschrieben wird.
Das nicht maskiert wird kann ich nicht bestätigen. Ich habe z.B. bei der E-Mail-Empfangsadresse "$\@bla.com" eingegeben und die Konfiguration gespeichert.
Beim Speichern wird die Maskierung dieses Wertes in Zeile 463 erledigt:
   $cronscript.='$cronmailto="' . escape_specialchars($config['email_recipient']) . '";' . $nl;

Folgerichtig findet sich danach in der mysqldumper.conf.php korrekt maskiert:
$cronmailto="\$\@bla.com";


Ich kann das nicht reprodzieren.

Quote:
die es am 04.05. zu downloaden gab

???
Die letzte veröffentlichte Version 1.24.4 wurde am 24.01.2011 veröffentlicht. Von welcher Version sprichst Du?

_________________
Gruß / Greetings, DSB

Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.

OfflineView user's profileSend private messageSend e-mailVisit poster's website    
stoby89
knows MySQLDumper
knows MySQLDumper





Joined: 04 May 2011
Posts: 3


blank.gif

PostPosted: 2011-05-12, 10:27    (No subject) Reply with quoteBack to top

Hallo,

« DSB » wrote:
Das nicht maskiert wird kann ich nicht bestätigen. Ich habe z.B. bei der E-Mail-Empfangsadresse "$\@bla.com" eingegeben und die Konfiguration gespeichert.
Beim Speichern wird die Maskierung dieses Wertes in Zeile 463 erledigt:
   $cronscript.='$cronmailto="' . escape_specialchars($config['email_recipient']) . '";' . $nl;

Folgerichtig findet sich danach in der mysqldumper.conf.php korrekt maskiert:
$cronmailto="\$\@bla.com";


Ich kann das nicht reprodzieren.
Damit ist es doch reproduziert, denn genau DAS ist das Problem. Wenn man meinen Beitrag aufmerksam gelesen hätte, dann stellt man fest, dass ich nicht von einem E-Mail Empfänger sprach, sondern vom Datenbankpasswort und genau dort führt das zu einem Fehler. Wenn das Passwort mit Backslashes in doppelten Anführungszeichen in der Konfiguration steht, dann wird es anschließend nicht als Backslash interpretiert, sondern als Steuerzeichen.

« DSB » wrote:
Die letzte veröffentlichte Version 1.24.4 wurde am 24.01.2011 veröffentlicht. Von welcher Version sprichst Du?


Ich verwende die Version 1.24.4 und fande, dass meine Formulierung absolut präzise war.
Nichts desto trotz habe ich den Fehler nun mit einer zweiten Installation reproduzieren können.

Damit nichts wieder so kleinkarrierte Fragen auftauchen, nun alles im Detail:

  1. Neuen Mysqlbenutzer erstellt mit folgendem Passwort %5\+nvuzi
  2. MySQLDumper Installation kopiert
  3. mit altem Benutzer Perldump und PHPdump erfolgreich gemacht
  4. Neue Benutzerdaten über die Weboberfläche eingetragen
  5. PHP Dump funktioniert einwandfrei
  6. Perl Dump schlägt wegen falscher Zugangsdaten fehl
  7. /work/config/mysqldumper.conf.php inspiziert und siehe da, wie bereits im ersten Post geschrieben, genau der gleiche Fehler: der Backslash wurde NICHT maskiert und führt zu einem Fehler.


Die Lösung zu dem Problem ist eigentlich einfach: In der functions.php ab Zeile 450 müssen dort, wo die Konfiguration für das Perlscript erstellt wird, alle doppelten Anführungszeichen durch einfach ersetzt werden.

 $cronscript.='$dbpass="' . escape_specialchars($config['dbpass']) . '";' . $nl;


muss ersetzt werden durch

 $cronscript.='$dbpass=\'' . escape_specialchars($config['dbpass']) . '\';' . $nl;


Damit funktioniert die Konfigerstellung für Perl und der Backslash wird als Backslash interpretiert, da in einfachen Anführungszeichen keine Steuerzeichen interpretiert werden.

Ich hoffe, dass mein Beitrag jetzt endlich mal durchgelesen und nicht nur überflogen wird. Es ist schon ziemlich frustrierend, dass wenn man Sinnvolles beitragen will ständig abgewehrt wird im Sinne von "es funktioniert doch alles" anstatt genau die Dinge zu testen die geschildert worden sind.

Grüße

OfflineView user's profileSend private message    
Display posts from previous:      
Post new topicReply to topic


 Jump to:   


Show permissions
Similar topics
Topic Author Forum Replies Posted
No new posts Perl Backup immer Error 404 luckyheiko Fehler / Probleme 6 2012-05-23, 10:06 View latest post
No new posts MySQL-ERROR / nach phpmyadmin passwor... stone_22 MySQLDumper 1.24 4 2012-03-31, 00:40 View latest post
No new posts Perl: Eine Datenbank wird übersprungen Vee Fehler / Probleme 1 2012-03-28, 07:57 View latest post
No new posts MySQL-ERROR: Access denied for user '... topi009 Allgemeine Fragen zu MySQLDumper 3 2012-03-22, 13:34 View latest post
No new posts Mysql 5 DB ist im Dumper nicht sichtbar Marc Gelöst/Erledigt 4 2012-03-09, 21:38 View latest post

 
CrackerTracker © 2004 - 2012 CBACK.de

Powered by Orion based on phpBB © 2001, 2002 phpBB Group
CBACK Orion Style based on FI Theme
All times are GMT + 2 Hours

phpBB SEO