11. marts 2002 - 07:34Der er
11 kommentarer og 1 løsning
Perl+MySQL connect
Hej Perl'ere.
Jeg har et problem med at få forbindelse til min MySQL server. Jeg har nappet et script på nettet, og tilpasset det:
#!/usr/bin/perl -w use strict; use DBI;
my $dbh = DBI->connect("DBI:mysql:test", "mit_brugernavn", "<kodeord>", {RaiseError=>1}) or die "Could not connect $DBI::errstr"; } Jeg har prøvet uden <kodeord> og med et <kodeord>, og opsætningen i user-tabellen har tilsvarende været udfyldt med og uden password. Resultatet er:
D:\perl>perl connect.pl DBI->connect(test) failed: Access denied for user: 'mit_brugernavn@localhost' ( Using password: NO) at connect.pl line 5 Hvad gør jeg forkert? Jeg er helt grøn, så alle bud er velkomne!
prøv at sætte host ind; my $dbh = DBI->connect("DBI:mysql:test;host=localhost", "mit_brugernavn", "<kodeord>", {RaiseError=>1}) or die "Could not connect $DBI::errstr";}
Jeg har ingen problemer med at connecte med MyPHPAdmin. Desuden kan jeg oplyse at alle privileges er sat til Y, pånær grant_priv. Og mit brugernavn er oprettet i kontekst med den aktuelle database i db feltet. Jeg testede lige ved at indsætte root:
my $dbh = DBI->connect("DBI:mysql:test", "root", "", {RaiseError=>1}) or die "Could not connect $DBI::errstr";
Det hjalp ikke at sætte host ind, fejlen viser jo også at jeg bliver afvist på localhost. Hvilken tabel er det du kalder mysql-access-tabellen? "mit_brugernavn" er oprettet i db og user tabellerne. Er brugernavnet "root" i øvrigt noget særligt, det er ikke oprettet i db tabellen, men har alligevel rettigheder til at tilgå et par databaser!?
Jeg har nu fundet ud af, at hvis jeg undlader at skrive et kodeord, så virker det? Måske det også gjorde en forskel at databasen var helt tom før, der eksisterede ingen tabeller, det gør der nu!? Men der er stadig et problem, hvis jeg skriver et kodeord. En anden ting er, at nogle gange er det kodeord jeg har indskrevet, blevet krypteret, andre gange ikke. Hvornår bliver det hvad?
Noget tyder på, at din mysql.user tabel er messed up.
Prøv at kig i indholdet. Hos mig - som befinder mig bag firewall med lukket port 80 (...) - har localhost úser root ingen adgangskode. Det samme gælder host %. De eneste, der kræver adgangskode er mine brugere. Localhost accepterer i øvrigt også user="".
Password bør oprettes krypteret. Jeg bruger phpMyAdmin 2.2.0 til at oprette brugere med. Her sker krypteringen automatisk. Hvis du blot banker password ind som en insert, sker der ingen kryptering
Jeg var ved at løbe alle mine ubesvarede spørgsmål igennem, og jeg glemte vist en årsag her. Jeg har efter installation af MySQL haft problemet, min mysql.user table fungerer udemærket. Hvorfor det virker som det gør, aner jeg ikke. Jeg har netop en bruger med et brugernavn på localhost, og han kan logge ind uden password. Bruger han sit passeord går det galt. Meget mærkeligt.
Jo, user'en har angivet et password. Jeg har nemlig selv oprettet user'en, og der ER et password. Men user-navnet kan kun bruges hvis man ikke angiver et password :).
Det synes at være et problem omkring rettigheder i Win NT.
M.v.h. Svante
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.