mysql Datenbank login über perl
|
Seitenanfang |
Hallo, ich habe in mysql eine Datenabnk erstellt mit verschiedenen usern. Nun will ich ein Perlscript schreiben indem ich dann in der Commandline aufgefordert werde meinen Namen und mein Passwort einzugeben. Wenn ich das gemacht habe solle möglich sein z.B.: Abfragen zu machen (in der Commandline). Kan mir da jemand weiter helfen!!!!
Datum: 08.12.2005-14:32

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| warum willst Du das mit perl machen? Reicht Dir "mysql" nicht? svenXY
Datum: 08.12.2005-14:41

|
re: mysql Datenbank login über perl
|
Seitenanfang |
das kann alles, was Du brauchst: $ mysql -h hos.domain.com -u user -P <port> -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9943042 to server version: 4.0.23-standard-logType 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>... Ansonsten musst Du Dich mit DBI::MySQL vertraut machen. Gruss, svenXY
Datum: 08.12.2005-14:44

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| Ich bin Biologe, der gerade eine Ausbildung zum Bioinformatiker macht- und das mit dem Perlscript ist eines unserer Aufgaben.Also brauche DBI::Mysql.
Datum: 08.12.2005-16:59

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| OK, dann versuche mal "perldoc DBI" in einer cmd Konsole (Windows) oder "man DBI" (Linux/Unix). Da kommen auch jede Menge Beispiele, soweit ich mich erinnere. Die Aufgabe ist auch eigentlich recht einfach: 1) Variablen für name und password (und eventuell für den Datenbankserver und die Datenbank) über die Standardeingabe in Variablen schreiben 2) DBI Objekt initialisieren (ein Datenbankhandle erstellen) mit den oben gesammelten Daten 3) wenn mehrere Abfragen hintereinander möglich sein sollen, eine while-Schleife basteln, jeweils den gewünschten SQL Befehl wiederum über STDIN in Variable schreiben 4) ein statement handle mit der SQL-Variable bauen und abschicken (hier bietet sich für SELECTs der Befehl selectall_hashref an) 5) bei Selects Ergebnis ausgeben das war's schon. Dafür gibt es jede Menge Anleitungen im Netz. Und Du willst ja auch noch was dabei lernen, oder? Gruss, svenXY
Datum: 09.12.2005-09:10

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| so sieht mein script aus-das funktioniert auch, wenn ich aber "Radolf" <STDIN> verwenden will bekomme ich eine Fehlermeldung (Access denied). use DBI; $verbinden="DBI:mysql:maus"; #name der DB $user="Radolf"; $password="martin"; use DBI; my $dbh = DBI->connect( "$verbinden","$user","$password") || die "Database connection not made: $DBI::errstr"; my $sql = qq{select * from breeding}; my $sth = $dbh->prepare( $sql ); $sth->execute(); while(@ergebnis=$sth->fetchrow_array) { print $ergebnis[0]." ".$ergebnis[1]." ".$ergebnis[2]." ".$ergebnis[3]." \n"; } $sth->finish(); $dbh->disconnect(); Danke Martin
Datum: 09.12.2005-09:46

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| Hi, was meinst Du mit "Radolf STDIN"? Ich sehe, Du hast schon das meiste - gut! Also, wie Du den user und das passwort bekommst:
echo "username: "; my $user = <STDIN>; chomp $user; # das newline am Ende entfernen, muss man immer machen! echo "password: "; my $password = <STDIN>; chomp $password; ...
wenn Du möchtest, dassd man das passwort nicht sieht bei der Eingabe, musst Du (für das Passwort) Folgendes machen:
use Term::ReadKey; print "Enter your password: "; ReadMode 'noecho'; $password = ReadLine 0; chomp $password; ReadMode 'normal'; ...
Gruss, svenXY
Datum: 09.12.2005-10:02

|
re: mysql Datenbank login über perl
|
Seitenanfang |
Vielen Dank es funktioniert. Mit echo bekomme eine Fehlermeldung, auch mit RaedKey hat er Probleme. Ich habe statt echo einfach print genommen.Die 2.Version, wo man das Passwort nicht sieht wäre zwar super, aber wie gesagt er schreibt " Can't locate Term/ReadKey.pm..." gruß Martin
Datum: 09.12.2005-12:54

|
re: mysql Datenbank login über perl
|
Seitenanfang |
Kann man eigentlich das script auch so verändern, daß man wenn man bei richtigem login gleich zur Datenbank weitergeleitet wird wo dann der user seine z.B.: Abfragen machen kann. Ich weiß ich frage ein wenig viel aber ich lerne Perl erst seit 5 Wochen. danke Martin
Datum: 09.12.2005-13:43

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| ich verstehe leider Deine Frage nicht :-( Sven
Datum: 09.12.2005-14:17

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| Ich meinte ein script indem man sich in der Commandline (wie iches jettzt schon habe einloggt und wenn das geschehen ist wird man dann zum MySql CommandLine Fenster weitergeleitet.
Datum: 09.12.2005-14:42

|
re: mysql Datenbank login über perl
|
Seitenanfang |
Du meinst, wie man per Perl username und passwort entgegennimmt und dann damit das mysql Programm aufmacht? # username und passwort entgegennehmen exec("mysql -h host -P port -u $user -p $password");
exec ersetzt das laufende Skript mit einem anderen Befehl (hier: mysql).Ist es das? Ansonsten bin ich von Deiner Terminologie verwirrt. In welcher Commandline bist Du jetzt schon und was vestehst Du unter "MySql CommandLine Fenster"? svenXY
Datum: 09.12.2005-15:14

|
re: mysql Datenbank login über perl
|
Seitenanfang |
Wie du siehst bin ich ein ziemlicher Anfänger. Das perlscript fordert mich auf Name und Passwort einzugeben.Wenn ich normalerweise eine Datenbankabfrage in Mysql mache wechsle ich zu C:Programme/mysql/mysql server 5.0/ bin dort kann ich mich dann einloggen mit mysql -h localhost -u user -p. Wenn ich dort mein Passwort eingebe komme ich eben zu Welcome ....., wo ich dann use maus (Name der DB) , dann kommt database changed-- und genau dort will ich hin. Ich hoffe ich konnte mein Problem jetzt irgendwie verständlicher zum Ausdruck bringen. Wenn ich den von dir vorgeschlagenen Befehl exec(mysql -h....) mache kommt eine Fehlermeldung (Befehl mysql wurde falsch geschrieben oder konnte nicht gefunden werden. vielen Dank für die Geduldmartin
Datum: 09.12.2005-15:47

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| Das passiert, weil mysql nicht im Pfad steht. exec("C:Programme/mysql/mysql\ server 5.0/bin/mysql -h -u $user -P port -p $password"); Die Datenbank kannst Du mit diesem Befehl nicht direkt wechseln. Das musst Du schon machen. svenXY
Datum: 09.12.2005-16:27

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| stimmt nicht! exec("C:Programme/mysql/mysql\ server 5.0/bin/mysql -h -u $user -P port -p $password maus"); sollte direkt die Datenbank maus aufmachen. Sorry, svenXY
Datum: 09.12.2005-16:32

|
re: mysql Datenbank login über perl
|
Seitenanfang |
Ich bekomme jetzt die Meldung-Das System kann den angegeben Pfad nicht finden. Folgenden Pfad habe ich in meinem script eingegeben: use DBI; $verbinden="DBI:mysql:maus"; my$user=<STDIN>; my$password=<STDIN>; exec("C:Programme/Mysql/Mysql Server 5.0/bin -h - p $user -$password maus") Der Pfad sollte richtig sein sogar die Leerzeichen
Datum: 09.12.2005-18:00

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| natürlich -u $user -p $password ...
Datum: 09.12.2005-18:01

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| natürlich -u $user -p $password ...
Datum: 09.12.2005-18:01

|
re: mysql Datenbank login über perl
|
Seitenanfang |
mit system 'c:\programme\mysq\mysql server 5.0\bin\mysql komme ich zum gewünschten Pfad nur kommt natürlich die Meldung Access denied. Wenn ich -h localhost -u Radolf -p martin dazu schreibe kommt dann Fehlermeldung Befehl falsch geschrieben oder der Pfad konnte nicht gefunden werden. Liegt an der Syntax oder muß ich vielleicht noch irgendein Modul installieren?? vielen Dank nochmals Martin
Datum: 10.12.2005-13:11

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| Hi, ein Modul brauchst Du dazu überhaupt nicht, da Du ja eigentlich nur zwei Variablen füllst und dann system() aufrufst. Es liegt sicher an der Art des Aufrufs, aber prinzipiell musst Du es genauso in die system()-Zeile schreiben, wie Du es auch aufrufst, wenn Du eine cmd offen hast (mit dem kompletten Pfad natürlich). Du wirst es schon hinkriegen. Gruss, svenXY
Datum: 12.12.2005-09:45

|
re: mysql Datenbank login über perl
|
Seitenanfang |
es funktioniert!!!!!! und zwar habe ich es jetzt so gemacht: use DBI; print"Enter name: "; $user=<STDIN>; print"\n"; chdir("c:/program files/mysql/mysql server 5.0/bin/") or die "can ot change"; system("mysql -u $user -p"); da springe ich direkt zu dem Schritt wo ich mein Passwort für die DB eingeben muß. vielen Dank nochmals
Datum: 12.12.2005-10:43

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| gut! use DBI brauchst Du hier nicht, da Du ja das externe Programm mysql benutzt und nicht das Perl-eigene DBI. Ciao, svenXY
Datum: 12.12.2005-11:41

|
re: mysql Datenbank login über perl
|
Seitenanfang |
| Dann musst Du das Modul Term::Readkey installieren (mit ppm bei Windows oder cpan bei Linux)
Datum: 09.12.2005-14:10

|