php - yes - sqlstate hy000 1045 accès refusé pour l utilisateur homestead localhost mot de passe oui




"Connexion échouée: Accès refusé pour l'utilisateur 'root' @ 'localhost'(en utilisant le mot de passe: YES)" de la fonction php (6)

J'ai écrit une fonction utilisée par une page web php, afin d'interagir avec une base de données mysql. Quand je les teste sur mon serveur, j'obtiens cette erreur:

"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)" 

Je suis capable de les utiliser sur mon PC (en utilisant XAMPP) et je peux naviguer à travers les tables de la base de données en utilisant la ligne de commande dans le serveur. Toutefois, la page Web ne parvient pas à se connecter. J'ai vérifié le mot de passe mais sans résultat. C'est correct (sinon je ne pourrais pas me connecter à mysql depuis la ligne de commande).

L'appel de la fonction est le suivant:

$conn = new mysqli("localhost", "root", "password", "shop");

Dois-je configurer quelque chose sur mon serveur? Merci

Edit: PHP version 5.3.3-7 + version mysql squeeze1: 5.1.49-3 à la fois sur debian


Ici peut-être?

Je crois que le code devrait être:


$connect = new mysqli("host", "root", "", "dbname");

parce que root n'a pas de mot de passe. le (using password: YES) dit "vous utilisez un mot de passe avec cet utilisateur"


D'après ce que vous avez dit jusqu'ici, cela ressemble à un problème où le pilote MySQL dans PHP5.3 a du mal à se connecter à l'ancienne version 4.1 de MySQL. Jetez un oeil sur bitshop.com/Blogs/tabid/95/EntryId/67/…

Voici une question similaire avec quelques réponses utiles, Impossible de se connecter à MySQL 4.1+ en utilisant l'ancienne authentification

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user

Cela retournera 16 pour les comptes avec les anciens mots de passe et 41 pour les comptes avec de nouveaux mots de passe (et 0 pour les comptes sans mot de passe, vous pouvez aussi prendre soin de ceux-ci). Soit utiliser les outils de gestion des utilisateurs du frontal MySQL (s'il y en a) ou

SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges

Essayez d'initialiser vos variables et utilisez-les dans votre objet de connexion:

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

Existe-t-il une entrée de compte utilisateur dans la base de données pour root @ localhost? Dans MySQL, vous pouvez définir différentes autorisations de compte utilisateur par hôte. Il peut y avoir plusieurs comptes différents avec le même nom combinés avec l'hôte à partir duquel ils se connectent. Les plus communs sont [email protected] et root @ localhost. Ceux-ci peuvent avoir différents mots de passe et permissions. Assurez-vous que root @ localhost existe et possède les paramètres que vous attendez.

Je suis prêt à parier, sur la base de votre explication, que c'est le problème. La connexion à partir d'un autre PC utilise un compte différent de root @ localhost et la ligne de commande se connecte à l'aide de [email protected]


J'ai résolu de cette façon: Je me suis connecté avec le nom d'utilisateur root

mysql -u root -p -h localhost

J'ai créé un nouvel utilisateur avec

CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';

alors j'ai créé la base de données

CREATE DATABASE shop;

J'ai accordé des privilèges pour un nouvel utilisateur pour cette base de données

GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';

Ensuite, je me suis déconnecté de la racine et connecté un nouvel utilisateur

quit;
mysql -u francesco -p -h localhost

J'ai reconstruit ma base de données en utilisant un script

source shop.sql;

Et c'est tout .. Maintenant, à partir de php fonctionne sans problèmes avec l'appel

 $conn = new mysqli("localhost", "francesco", "some_pass", "shop");

Merci à tous pour votre temps :)


Très probablement, il n'identifie pas correctement votre utilisateur. root @ localhost. Sélectionnez la version Mysql que votre MAMP utilise.

/Applications/MAMP/Library/bin/mysqldump -uroot -p db_name > test_db_dump.sql

En fait, j'ai écrit un alias sur mon ordinateur, donc je n'ai pas besoin de me souvenir comment accéder au répertoire bin.

alias mysqldumpMAMP='/Applications/MAMP/Library/bin/mysqldump'

Ce qui me permet d'exécuter ceci:

mysqldumpMAMP -uroot -p db_name > test_db_dump.sql

Vous pouvez enregistrer un alias dans votre profil bash ~/.bash_profile ou ~/.bash_rc







access-denied