"Échec de la connexion: Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: oui) " de la fonction php
j'ai écrit une fonction utilisée par une page Web php, afin d'interagir avec une base de données mysql. Lorsque 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. Cependant, la page web ne se connecte pas. J'ai vérifié le mot de passe mais sans résultats. 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 dans mon serveur? Merci
Edit: PHP Version 5.3.3-7+squeze1 version mysql: 5.1.49-3 tous les deux sur debian
10 réponses
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';
puis j'ai créé la base de données
CREATE DATABASE shop;
j'ai le privilège accordé pour un nouvel utilisateur pour cette base de données
GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';
puis je me suis déconnecté de root et me suis connecté au 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 :)
y a-t-il une entrée de compte utilisateur dans le DB pour root@localhost? Dans MySQL vous pouvez définir différentes permissions de compte utilisateur par hôte. Il pourrait y avoir plusieurs comptes différents avec le même nom combiné avec l'hôte de connexion. Les plus courants sont: root@127.0.0.1 et root@localhost. Ceux-ci peuvent avoir différents mots de passe et des autorisations. Assurez-vous que root@localhost existe et a les paramètres que vous attendez.
je suis prêt à parier, basé sur votre explication, que ce soit le problème. Se connecter à partir d'un autre PC utilise un compte différent de root@localhost et la ligne de commande je pense se connecte en utilisant root@127.0.0.1.
D'après ce que vous avez dit jusqu'à présent, ça ressemble à un problème où le pilote MySQL dans PHP5.3 a de la difficulté à se connecter à L'ancienne version de MySQL 4.1. Jetez un oeil sur http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspx
il y a une question similaire ici avec quelques réponses utiles, ne peut pas 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 d'anciens mots de passe et 41 pour les comptes avec de nouveaux mots de passe (et 0 pour les comptes sans mot de passe du tout, vous pourriez vouloir prendre soin de ceux-ci aussi). Utilisez les outils de gestion des utilisateurs de MySQL front end (s'il y en a) ou
SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges
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 "
j'ai eu ce problème aussi. Mais c'était pour une autre raison.
Mon mot de passe a commencé avec le caractère $
... par exemple $MyPassword
Je l'ai changé en #MyPassword
et le problème est résolu.
modifiez vos privilèges sur PHPmyAdmin (WAMP), notez que votre mot de passe et nom d'utilisateur n'a pas été créé. Alors créez ou modifiez-le, pour qu'il puisse fonctionner avec votre connexion sql dans votre php. Espérons que cela fonctionne
ASTUCE:
commentez le fichier pid et socket, si vous ne pouvez pas vous connecter au serveur..
mysql pourrait se connecter avec un fichier pid et/ou socket incorrect,
ainsi, lorsque vous essayez de vous connecter au serveur en ligne de commande il "looks
au mauvais fichier pid/socket...
### comment out pid and socket file, if you can't connect to server..
#pid-file=/var/run/mysql/mysqld.pid #socket=/var/lib/mysql/mysql.sock
très probablement, il n'identifie pas votre Utilisateur correctement. root@localhost. Sélectionnez la version Mysql que votre MAMP utilise.
/Applications/MAMP/Library/bin/mysqldump -uroot -p db_name > test_db_dump.sql
j'ai en fait écrit un alias sur mon ordinateur donc je n'ai pas à me rappeler comment aller dans le répertoire bin.
alias mysqldumpMAMP='/Applications/MAMP/Library/bin/mysqldump'
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
facile.
ouvrir le panneau de configuration xampp - > Config - > my.ini modifier avec le bloc-notes. Maintenant, ajoutez ceci ci-dessous [mysqld]
skip-grant-tables
Save. Lancez apache et mysql.
, je l'espère, vous aider à
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");