mysqli_connect échoue avec dbpassword
Mon système semble avoir quelques problèmes bizarres, je ne peux pas l'expliquer. J'ai un code suivant snip que je voudrais utiliser pour se connecter et lire les données de la base de données
define('DB','products');
define('HOST','localhost');
define('DBPASS','password');
define('DBUSER','root');
define('DBTABLE','product_tb');
$conn=mysqli_connect(HOST,DBUSER,DBPASS) or die('Could not connect: ' . mysqli_error($conn));
Mais il signale toujours une erreur que je ne peux pas établir une connexion avec mysqli_connect. J'essaie d'exécuter ce code sur un autre système, et il fonctionne très bien. Voici les deux avertissement et un pas d'erreur de connexion.
Avertissement: mysqli_connect() [function.mysqli-connect]: (28000/1045):
Access denied for user 'root'@'localhost' (using password: NO) dans
D:\xampp\htdocs\products.php sur la ligne 7Avertissement: mysqli_error() s'attend à ce paramètre 1 pour être mysqli, boolean
donné dans D:\xampp\htdocs\products.php sur la ligne 7 ne Pouvait pas se connecter:
Ce qui se passe quand j'système de test ne nécessite pas de mot de passe, j'ai donc quitté le DBPASS comme vide, mais une fois que je l'utiliser sur le système réel, il échoue avec l'erreur exactement la même, peu importe si je laisse de côté la DBPASS ou pas.... Je pensais que c'était le cache mais j'ai redémarré mysql et apache, mais rien ne fonctionne alors. Je vous remercie si vous pouviez offrir de l'aide.
- Pas la réponse à ce problème particulier, mais ne pas utiliser le compte root pour le web-face de code. Toujours créer une restriction des droits de l'utilisateur pour de telles choses. À l'aide de la racine qui donne des extra-larges portes ouvertes pour les mauvaises choses de se produire.
- Merci, c'est gentil.
- vous êtes très sûr que les Privilèges sont les mêmes sur les deux serveurs? avez-vous essayé la connexion à partir de la ligne de commande?
Vous devez vous connecter pour publier un commentaire.
À vérifier pour les erreurs de connexion, vous devez utiliser mysqli_connect_error() pas mysqli_error()
Qui permettra de résoudre l'un de vos messages d'erreur.
L'autre message d'erreur est dû à l'annulation des privilèges dans le serveur de base de données. Qui vous empêche d'accéder à la base de données. Comme @Dragon commenté, pouvez-vous vous connecter avec le nom d'utilisateur/mot de passe combo de la cmdline. Si vous n'avez pas de ligne de cmd accès, avez-vous php myadmin ou quelque chose d'autre, vous pouvez vérifier le user/pass/db combo pour vérifier qu'il fonctionne.
Aussi comme @MarcB dit, il serait sage d'utiliser une connexion qui ne dispose que d'un accès à une base de données spécifique sur votre serveur plutôt que de l'accès à la racine de toutes les bases de données. De cette façon, si vous code piraté, ils n'ont accès qu'à la 1 base de données (en théorie).
J'ai trouvé ce après une très longue agitation - il pondre dans mon cPanel->Maison>Bases de données MySQL:
Hôte MySQL Distant
“mysql2000.my-virtual-panel.com” c'est l'adresse pour le serveur MySQL. Lorsque vous vous connectez au serveur MySQL, vous devez spécifier cet hôte.
$host="mysql2000.my-virtual-panel.com";
Il devrait aider.