"Savienojums neizdevās: Lietotājam 'root'@'localhost' (izmantojot paroli: YES)" piekļuve liegta no php funkcijas

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 root@127.0.0.1 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 root@127.0.0.1.

Komentāri (3)

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
Komentāri (4)

Izmēģiniet inicializēt mainīgos un izmantot tos savienojuma objektā:

$username ="root";
$password = "password";
$host = "localhost";
$table = "shop";
$conn = new mysqli("$host", "$username", "$password", "$table");
Komentāri (2)