MySQL 5.0 og PHP 4

Jul 6, 2007

Jeg har lige haft formateret min computer. I den forbindelse skulle jeg "selvfølgelig" have geninstalleret PHP og MySQL, og i samme forbindelse støtte jeg på et lille problem, som det lader til flere har støt på (at dømme ud fra googles resultater).

Problemet

Jeg havde en applikation, som virkede fint lige før jeg formaterede computeren, men efter at have geninstalleret PHP og MySQL, kunne jeg ikke få forbindelse til databasen mere. Jeg havde ligeledes installeret MySQL GUI Tools, hvilke jeg brugte til at oprette brugere til databasen. Det skal nævnes at jeg denne gang installerede PHP v. 4.4.4 og MySQL v. 5.0.27, hvorefter jeg fik følgende fejl:

Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client
Hvorfor?

Problemet ligger i en ny måde at verificerer passwords på i MySQL 5.0 databasen - her snakker vi passwords til bruger af selve MySQL databasen, ikke af et CMS eller anden web applikation. Før formateringen brugte jeg MySQL 4.x.x samt PHP v. 4, hvilke arbejder meget  godt sammen. Men PHP 4 benytter "en gammel MySQL klient", som ikke umiddelbart kan arbejde sammen med MySQL 5.0 pga. den nye måde at verificerer passwords på.

Løsningen

Løsningen er heldigvis til at komme over - du skal blot opdaterer dine passwords til dine MySQL brugere!

Når du har installeret MySQL databasen og oprettet dine brugere, kan du logge ind gennem MySQL kommandoprompten, og opdaterere dine brugere. Du finder kommandoprompten ved at kører mysql.exe fra "bin" kateloget, hvor du har installeret serveren.

Start mysql.exe med root brugeren:

C:mysql-5.0.27-win32in>mysql -u root
Benyt databasen med brugere af serveren (denne er standard):
mysql> use mysql;
Opdater dine brugeres passwords til at være kompatible med ældre klienter:
mysql> UPDATE user SET Password=OLD_PASSWORD("dit-password-her") WHERE User="din-bruger-her";

mysql> FLUSH PRIVILEGES;

Du kan læse mere om problemet på MySQL developer zone.

Comments

comments powered by Disqus