Jag är inte riktigt klar över varför detta blev ett problem på min XAMPP-installation, eftersom jag också kör PHP 5.3.x på serverns lokala box och inte upplevde dessa problem där. Det har dock att göra med att min mySQL-server körs i krypteringsläge "gammalt lösenord". Nyare versioner av PHP tillåter inte den typen av anslutningar, så du måste uppdatera din mySQL-server för att använda den nyare lösenordskrypteringen. Här är stegen, förutsatt att du har kontroll över mySQL-servern. Om du inte gör det, faller det utanför omfattningen av min kunskap.
-
hitta konfigurationsfilen för mysql-servern som heter
my.cnf
. Jag hittade min på/etc/my.cnf
. Du kan redigera den medsudo nano /etc/my.cnf
-
Leta efter en rad som säger
old_passwords=1
och ändra det tillold_passwords=0
. Du har nu berättat för servern att nästa gång den körs, och den ombeds att kryptera ett lösenord med kommandot PASSWORD() använder den den nya 41-teckenskrypteringen snarare än den 16-teckens "gamla" krypteringen -
Nu måste du starta om din mysql-server/tjänst. YMMV, men på Fedora gjordes det enkelt med
sudo service mysqld restart
. Kontrollera ditt operativsystems instruktioner för att starta om mysql-demonen eller tjänsten -
Nu måste vi faktiskt redigera vår
user
tabell i mysql. Så öppna upp ett interaktivt skal till mysql (på servern kan du skrivamysql -uYourRootUsername -pYourRootPassword
) -
Byt till
mysql
databas. Detta är databasen som innehåller alla bra saker för serverdrift och autentisering. Du måste ha root-åtkomst för att arbeta med den här databasen. Om du får en "åtkomst nekad" är du SOL. Förlåt.use mysql;
kommer att byta till den databasen -
Nu vill vi uppdatera användaren som gav dig sorg. I slutändan kommer du förmodligen att vilja uppdatera alla dina användare, men för närvarande fokuserar vi bara på användaren som orsakade felet.
update user set Password=password('YOUR_PASSWORD') where User='YOUR_USERNAME';
-
Nu behöver du bara berätta för mysql att använda det nya lösenordet för autentisering när den användaren försöker ansluta.
flush privileges;
.
Du borde vara bra att gå!