Avatar billede michaeltajo Nybegynder
24. februar 2005 - 08:26 Der er 37 kommentarer og
1 løsning

Manglende MyQSL-connenction via PHP

1) Jeg er newbee hvad MySQL (og databaser generelt) angår.
2)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <title>PHP og MySQL</title>
    </head>
    <body>
        <?php
                $dbcnx = mysql_connect('localhost', 'root', 'XXXXXmit_kodeordXXX');
            if (!$dbcnx) {
                echo( '<p>Unable to connect to the ' .
                'database server at this time.</p>' );
                exit();
            }
        ?>
    </body>
</html>

===========================================================================


Ovenstående producerer følgende fejl:

Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\amp\Apache2\htdocs\mennesker\mennesker\mennesker\visning.php on line 14

Unable to connect to the database server at this time.

3) Hvad gør jeg galt ? Har det noget med configurationen af min MySQL at gøre (eller mådke min Apache?)
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 08:26 #1
Er tilbage ca. 9.30
Avatar billede doodoo Novice
24. februar 2005 - 08:30 #2
ahvad jeg kan se mangler du at fortælle hvilken database den skal connecte til... efter:
, 'XXXXXmit_kodeordXXX');
Avatar billede greew Nybegynder
24. februar 2005 - 08:40 #3
Avatar billede greew Nybegynder
24. februar 2005 - 08:44 #4
I øvrigt er det dårlig stil at connecte med root fra selve hjemmesiden. Du bør oprette en bruger, der har de rettigheder, den skal bruge fra hjemmesiden, men hvis du har bare et lille sikkerhedshul i din kode, kan man ødelægge din database fuldstændig, fordi det er din root, der er logget ind.
Avatar billede cpfrande Nybegynder
24. februar 2005 - 09:31 #5
qreew: Er sikkert en hjemme webserver, det køre på. Der ville jeg sikkert også bruge root :)
Avatar billede greew Nybegynder
24. februar 2005 - 09:36 #6
cpfrande: Sikkert nok - men det er stadig bedre stil ikke at bruge root! :-)
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 09:55 #7
Jo, det er en hjemme-webserver (uden internet-adgang).
Avatar billede greew Nybegynder
24. februar 2005 - 09:56 #8
Ok.. uden internetadgang så er det ikke noget problem :-)

Hvilken version af MySQL bruger du ??
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 10:10 #9
MySQL: 4.1.8-nt
PHP: 4.3.9
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 10:11 #10
Jeg kan ikke huske, om det er det samme hjemme; men her på mit studium er det i hvert fald ovenstående kombination.
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 10:12 #11
Og jeg får samme fejl !!!!!
Avatar billede detox Nybegynder
24. februar 2005 - 10:22 #12
En måde at løse problemet på kan være at begrænse længden på 'Password' feltet i 'user' tabellen i 'mysql' databasen. Det nye password format fylder 32 byte, så hvis du sætter længden til fx 16, vil MySQL automatisk bruge det gamle format.
Altså i den her stil:

ALTER TABLE `user` CHANGE `User` `User` VARBINARY(16) NOT NULL
Avatar billede detox Nybegynder
24. februar 2005 - 10:25 #13
Sorry:

ALTER TABLE `user` CHANGE `Password` `Password` VARCHAR( 20 ) NOT NULL
Avatar billede greew Nybegynder
24. februar 2005 - 10:28 #14
husk, at der skal connectes til databasen 'mysql' når den kommando køres
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 10:45 #15
Efter at have logget ind via 'use mysql;' i konsollen får jeg at vide at der er en syntaksfejl i:
ALTER TABLE `user` CHANGE `Password` `Password` VARCHAR( 20 ) NOT NULL
Avatar billede detox Nybegynder
24. februar 2005 - 10:55 #16
Prøv:

ALTER TABLE user CHANGE `Password` `Password` VARCHAR(20) NOT NULL;
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 10:59 #17
stadig syntaksfejl...
Avatar billede detox Nybegynder
24. februar 2005 - 11:01 #18
Hmmm, har lige testet ovenstående. Den sidste giver ikke syntaksfejl her.
Avatar billede detox Nybegynder
24. februar 2005 - 11:04 #19
Måske:

alter table user change Password Password varchar(20) not null;
Avatar billede detox Nybegynder
24. februar 2005 - 11:04 #20
Den virker osse her :o)
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 11:07 #21
Jeps, det virkede uden apostrofferne !
Jeg prøver at connecte via PHP igen...
Avatar billede detox Nybegynder
24. februar 2005 - 11:19 #22
Det er så muligt at du osse skal lave nye Password. Du kan kende den nye type på at de starter med en: *. Slet evt. Passwords og start på en frisk.

UPDATE user SET Password = '';
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 11:20 #23
Der er stadig ikke forbindelse; men den maskine jeg sidder ved, skriver desværre ikke hvorfor.

Imidlertid har jeg forsøgt

<?php
$link = mysqli_connect("localhost", "root", "XXXXXmitkodeordXXXXXXX", "test");

/* check connection */
if (!$link) {
    echo("Connect failed: \n", mysqli_connect_error());
    exit();
}

echo("Host information: \n", mysqli_get_host_info($link));

/* close connection */
mysqli_close($link);
?>

som jeg har klampet fra PHP-manualen. Den 'echo-er' hverken det ene eller det andet...
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 11:21 #24
sorry, havde ikke set din update password...
Avatar billede detox Nybegynder
24. februar 2005 - 11:23 #25
Så skal du naturligvis connecte uden password og derefter lave et nyt.
Avatar billede detox Nybegynder
24. februar 2005 - 11:26 #26
Hvis du har loadet mysqli extension, kan du godt bruge den. Men så længe den ikke er udbredt på diverse webhoteller, vil det være inkompatibelt ved evt. upload til disse.
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 11:30 #27
Jeg har ændret password i MySQL Administrator - det er vel godt nok ? Og den vil stadig ikke...
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 11:38 #28
Hov, nu har localhost ikke adgang til MySQL-serveren !!!!!!!!
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 11:38 #29
Vender tilbage, når jeg har geninstalleret MySQL
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 11:55 #30
Har geninstalleret MySQL, same old shit...
Avatar billede detox Nybegynder
24. februar 2005 - 11:58 #31
Hmm, så ved jeg sørme ikke. Det er den måde jeg selv har løst det på.
Men der er jo andre metoder på den side greew henviser til:
http://dev.mysql.com/doc/mysql/en/old-client.html
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 12:00 #32
P.S.: mysqli_connect var en fejl. Har nu afviklet:

<?php
$link = mysql_connect('localhost', 'root', 'deemavis');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?> 

som giver:

Could not connect: Client does not support authentication protocol requested by server; consider upgrading MySQL client
Avatar billede detox Nybegynder
24. februar 2005 - 12:12 #33
Og har du så sat længden på Password feltet inden du lavede et nyt password?
Du kan tjekke dem med:

select Password from user;

De skal så IKKE starte med *
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 12:23 #34
Yes, jeg har sat længden, og de starter ikke med *
Avatar billede yellow Nybegynder
24. februar 2005 - 12:33 #35
Opdater til php 5+ (den kan bruge php_mysqli som kan snakke med mysql 4.1+ interfacet ).

Ellers installér en mysql version tidligere end 4.1.

Ellers lav password workaround som prøvet ovenfor. Gå ind i mysql komanndo prompten og skriv:
SET PASSWORD FOR 'brugernavn'@'localhost' = OLD_PASSWORD('password');
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 12:34 #36
>>> detox

Løsningen var:

SET PASSWORD FOR user@localhost = OLD_PASSWORD('password');

som http://dev.mysql.com/doc/mysql/en/old-client.html foreslår. En fyr fra PHP's online-dokumentation havde forsøgt det med succes, og det gælder nu også mig !!!

Kan du ikke smide et svar, du har knoklet for de sølle 60 points...
Avatar billede michaeltajo Nybegynder
24. februar 2005 - 12:36 #37
>>> Til yellow
Du har ret; men jeg havde selv fundet ud af det før, ellers tak !
Avatar billede detox Nybegynder
09. marts 2005 - 08:49 #38
Jeps, den er noteret :O)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester