Es uzrakstīju dažas funkcijas, ko izmanto php tīmekļa lapa, lai mijiedarbotos ar mysql datubāzi. Kad es tās testēju uz sava servera, man parādās šāda kļūda:
"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)"
Es varu tās izmantot savā datorā (izmantojot XAMPP), un es varu pārvietoties pa datubāzes tabulām, izmantojot servera komandrindas komandrindu. Tomēr tīmekļa vietnei neizdodas izveidot savienojumu. Esmu pārbaudījis paroli, bet bez rezultātiem. Tā ir pareiza (citādi es nevarētu pieteikties mysql no komandrindas).
Funkcijas izsaukums ir šāds:
$conn = new mysqli("localhost", "root", "password", "shop");
Vai man kaut kas ir jāiestata savā serverī? Paldies
Rediģēt: PHP versija 5.3.3-7+squeeze1 mysql versija: 5.1.49-3 abas uz Debian
Vai datubāzē ir lietotāja konta ieraksts root@localhost? MySQL var iestatīt dažādas lietotāja konta atļaujas atkarībā no saimnieka. Var būt vairāki dažādi konti ar vienu un to pašu nosaukumu kopā ar saimniekorganizatoru, no kura tie pieslēdzas. Visbiežāk sastopamie ir [email protected] un root@localhost. Tiem var būt dažādas paroles un atļaujas. Pārliecinieties, vai root@localhost pastāv un vai tam ir iestatījumi, ko vēlaties.
Pamatojoties uz jūsu paskaidrojumu, es esmu gatavs derēt, ka problēma ir šī. Pieslēdzoties no cita datora, tiek izmantots cits konts nekā root@localhost, un komandrindā, manuprāt, savienojas, izmantojot [email protected].
No tā, ko līdz šim esat teicis, šķiet, ka problēma ir tā, ka PHP5.3 MySQL draiverim ir problēmas savienoties ar vecāko MySQL versiju 4.1. Apskatiet to vietnē http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspx.
Šeit ir līdzīgs jautājums ar dažām noderīgām atbildēm, https://stackoverflow.com/questions/1575807/cannot-connect-to-mysql-4-1-using-old-authentication.
SELECT `User`, `Host`, Length(`Password`) FROM mysql.user
Tas atgriezīs 16 kontiem ar vecajām parolēm un 41 kontiem ar jaunajām parolēm (un 0 kontiem bez paroles, iespējams, vēlēsieties parūpēties arī par tiem). Izmantojiet MySQL lietotāja pārvaldības rīkus (ja tādi ir) vai
SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges