perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 28
Click for quality!




11.02.2012 / 20:23

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Rund um das Thema Datenbank zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragmysql 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

Beitragre: mysql Datenbank login über perl
Seitenanfang
warum willst Du das mit perl machen? Reicht Dir "mysql" nicht?

svenXY

Datum: 08.12.2005-14:41

Beitragre: 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-log

Type '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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: mysql Datenbank login über perl
Seitenanfang
ich verstehe leider Deine Frage nicht :-(

Sven

Datum: 09.12.2005-14:17

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: mysql Datenbank login über perl
Seitenanfang
natürlich -u $user -p $password ...

Datum: 09.12.2005-18:01

Beitragre: mysql Datenbank login über perl
Seitenanfang
natürlich -u $user -p $password ...

Datum: 09.12.2005-18:01

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

-






-
-