connect einer MySQL DB auf einem entfernten Rechner
Rol
- perl
0 Cruz0 Bjoern0 Rol0 Bjoern0 Klaus Mock0 Rol0 Rol0 Klaus Mock0 Rol
Hi,
ich habe mit dem Perl DBI immer nur MySQL DB angesproche die auf dem selben Rechner wie das Perl-Script liegen.
Da geht doch sicher auch mit einem entfernten Rechner.
Muß ich dabei nur das:
'my $dbh=DBI->connect("DBI:mysql:database=dbName","username","pw");'
ändern und wenn ja, wie?
Viele Grüße
Rol
Hallo,
ja es reicht dafür den connect aufruf zu ändern. Schau dir mal die Syntax des connect Befehls an (ich weiss auch nicht auswendig), man kann da irgendwo einen host in form einer IP Adresse oder URL angeben. IP Adresse ist besser, weil es nicht aufgelöst werden muss.
Grundsätzlich würde ich host, dbname, user und passwort in einer config datei auslagern, damit man es nur einmal an einer zentralen stelle ändern muss, anstatt in allen möglichen skripten die connect befehle per hand anpassen zu müssen.
Gruß
Cruz
Hi,
ich habe mit dem Perl DBI immer nur MySQL DB angesproche die auf dem selben Rechner wie das Perl-Script liegen.
Da geht doch sicher auch mit einem entfernten Rechner.
Muß ich dabei nur das:
'my $dbh=DBI->connect("DBI:mysql:database=dbName","username","pw");'
ändern und wenn ja, wie?
Viele Grüße
Rol
hi,
im grunde hast du recht:
$dbh = DBI->connect($data_source, $username, $password);
aber die $data_source sollte so aussehen, beispiele:
dbi:DriverName:database_name
dbi:DriverName:database_name@hostname
dbi:DriverName:database_name~hostname!port
dbi:DriverName:database=database_name;host=hostname;port=port
also, gib einfach noch den hostname (ip oder name) an. dann geht's.
grüssle
bjoern
hi bjoern,
im grunde hast du recht:
dbi:DriverName:database_name@hostname
connect('DBI:mysql:dbName@www.meineDomain.de',"root","");
(Habe z.Z. noch keinen Benutzer außer root angelegt)
also, gib einfach noch den hostname (ip oder name) an. dann geht's.
Leider gibts:
Error connecting to dbName: Incorrect database name 'dbName@www.meineDomain.de'
Viele Grüße
Rol
connect('DBI:mysql:dbName@www.meineDomain.de',"root","");
(Habe z.Z. noch keinen Benutzer außer root angelegt)
Leider gibts:
Error connecting to dbName: Incorrect database name 'dbName@www.meineDomain.de'
ehm. bin etwas ratlos. ich nehme an das hast du auch schon getestet:
connect('dbi:mysql:database=dbName;host=127.0.0.1','root','');
weiss leider auch nicht weiter. sollte doch funktionieren...
bjoern
Hallo,
connect('DBI:mysql:dbName@www.meineDomain.de',"root","");
Error connecting to dbName: Incorrect database name 'dbName@www.meineDomain.de'
http://search.cpan.org/author/JWIED/Msql-Mysql-modules-1.2219/mysql/lib/DBD/mysql.pm#DESCRIPTION
Lesen bildet;-)
Grüße
Klaus
Hallo,
http://search.cpan.org/author/JWIED/Msql-Mysql-modules-1.2219/mysql/lib/DBD/mysql.pm#DESCRIPTION
Lesen bildet;-)
Danke, aber jetzt schreibt mein Apache ins errorlog:
DBI->connect(database=testDB;host=www.meineDomain.de) failed: Can't connect to MySQL server on www.meineDomain.de (10061)
Könnte es sein, dass mein Provider (UUNet) das blockt?
Viele Grüße
Rol
Hallo,
http://search.cpan.org/author/JWIED/Msql-Mysql-modules-1.2219/mysql/lib/DBD/mysql.pm#DESCRIPTION
Lesen bildet;-)
my $dbh = DBI->connect("DBI:mysql:database=testDB;host=$host","bobby", "susi", {RaiseError => 1});
Da müsten man doch noch irgendwo Passwort und Benutzername für den entfernten Rechner angeben. Sonst könnte doch da jeder auf meine DB zugreifen.
Oder habe ich da jetzt 'nen Knoten in meinen Gedanken?
Viele Grüße
Rol
Hallo,
my $dbh = DBI->connect("DBI:mysql:database=testDB;host=$host","bobby", "susi", {RaiseError => 1});
Da müsten man doch noch irgendwo Passwort und Benutzername für den entfernten Rechner angeben.
Was glaubst Du, bzw. weißt Du nach intensiver Lektüre der Dokumenattion, wofür "bobby" und "susi" in obigem Funktionsaufrif stehen?
Sonst könnte doch da jeder auf meine DB zugreifen.
Nur wenn "bobby" und "susi" jedem bekannt sind, oder ausforschbar sind.
Aber mit diesem Problem stehst Du nicht alleine da. Es gibt gruzndsätzlich natürlich auch die Möglichkeit, die Datenbankzugriffe nur von bestimmten Rechnern aus zuzulassen. Ob dies bei mySQL auch so ist, müßte eigentlich in der Dokumenation stehen.
Eventuell könntest Du diese eingeschränkten Zugriffsmöglichkeiten auch mit Mitteln wie einer Firewall realisieren, die nötigen Rechte am Server vorausgesetzt.
Grüße
Klaus
Hallo,
my $dbh = DBI->connect("DBI:mysql:database=testDB;host=$host","bobby", "susi", {RaiseError => 1});
Da müsten man doch noch irgendwo Passwort und Benutzername für den entfernten Rechner angeben.
Was glaubst Du, bzw. weißt Du nach intensiver Lektüre der Dokumenattion, wofür "bobby" und "susi" in obigem Funktionsaufrif stehen?
Ich glaube, ich habe hier eine grundsätzlich Wissenslücke, vielleicht kanns du mir etwas auf die Sprünge helfen:
Ich habe die Name/PW Kombination mit der ich mich (z.B. über FTP oder Telnet) auf dem (entfernten) Rechner einloge (z.B. "ich" und "meinPasswort"[1]).
Dann habe ich für die MySQL Datenbank auf diesen Rechner noch Benutzer mit je einem zugehörigem PW (z.B. "bobby" und "susi" [2]) angelegt.
Wenn ich die DB mit einem Perl-Script auf dem gleichen (dem entferntem) Rechner anspreche, über gebe ich beim DBI->connect doch die "DB"-Name/PW Kombination[2] oder einfach "root" und "".
Müßte ich mich bei einem DB Zugriff von einem entferntem Rechner aus nicht erst einmal (wie beim einloggen über Telnet) mit de Name/PW Kombination [1] anmelden und dann den connect mit [2] oder eben "root" und "" machen ?
Viele Grüße
Rol