web-dev-qa-db-fra.com

Avertissement: mysqli_connect (): (HY000/1045): Accès refusé pour l'utilisateur 'nom d'utilisateur' @ 'localhost' (avec mot de passe: YES)

Avertissement: mysqli_connect (): (HY000/1045): Accès refusé pour l'utilisateur 'nom_utilisateur' @ 'localhost' (avec mot de passe: OUI) dans C:\Utilisateurs\xampp\htdocs\PHP_Login_Script\config.php à la ligne 6

Avertissement: mysqli_real_escape_string () s'attend à ce que le paramètre 1 soit mysqli, booléen donné dans C:\Utilisateurs\xampp\htdocs\PHP_Login_Script\login.php à la ligne 10

Avertissement: mysqli_real_escape_string () s'attend à ce que le paramètre 1 soit mysqli, booléen donné dans C:\Utilisateurs\xampp\htdocs\PHP_Login_Script\login.php à la ligne 11

Avertissement: mysqli_query () s'attend à ce que le paramètre 1 soit mysqli, booléen indiqué dans C:\Utilisateurs\xampp\htdocs\PHP_Login_Script\login.php à la ligne 15.

Avertissement: mysqli_fetch_array () s'attend à ce que le paramètre 1 soit mysqli_result, null indiqué dans C:\Utilisateurs\xampp\htdocs\PHP_Login_Script\login.php à la ligne 16

Avertissement: mysqli_num_rows () s'attend à ce que le paramètre 1 soit mysqli_result, null indiqué dans C:\Utilisateurs\xampp\htdocs\PHP_Login_Script\login.php à la ligne 19

Je reçois cette erreur ci-dessus sur localhost même si mon fichier de configuration ressemble à ceci: 

<?php

    define("DB_Host", "localhost");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    define("DB_DATABASE", "databasename");

    $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

?>

Cela fonctionnait, mais maintenant ça ne marche plus. Ce code pose-t-il un problème ou ne fonctionne-t-il pas maintenant? This est le tutoriel sur lequel je travaille en ce moment.

25
user2805663

Cette combinaison de nom d'utilisateur, d'hôte et de mot de passe n'est pas autorisée à se connecter au serveur. Vérifiez les tables d'autorisation (rechargement des droits si nécessaire) sur le serveur et que vous vous connectez au bon serveur.

14

Si vous utilisez wamp update 

define("DB_Host", "localhost");

À l'adresse IP de vos machines (la mienne est 192.168.0.25);

define("DB_Host", "192.168.0.25");

Vous pouvez le trouver sur window en tapant ipconfig dans votre console ou ifconfig sur mac/linux

12
hooligan

mysqli_connect (DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 

utiliser DB_Host au lieu de DB_SERVER 

7
moez

Regardez votre code Vous avez défini DB_Host et interrogé DB_SERVER. DB_USER et DB_USERNAME Utilisez ce code

define("DB_SERVER", "localhost");
define("DB_USER", "root");
define("DB_PASSWORD", "");
define("DB_DATABASE", "databasename");

$connect = mysqli_connect(DB_SERVER , DB_USER, DB_PASSWORD, DB_DATABASE);
6
hemanth kumar

Assurez-vous que votre mot de passe ne comporte pas de caractères spéciaux et conservez un mot de passe simple (par exemple, 12345), cela fonctionnera C'est la chose la plus étrange que j'ai jamais vue. J'ai passé environ 2 heures à comprendre cela.

Remarque: 12345 mentionné ci-dessous est votre mot de passe

GRANT ALL PRIVILEGES ON dbname.* TO 'yourusername'@'%' IDENTIFIED BY '12345';
5
Sathya

vous définissez comme DB_USER mais utilisez comme DB_USERNAME. De plus, php dit nom d'utilisateur @ localhost ne peut pas accéder. Pas root @ localhost. 

Changez votre paramètre de définition ou de connexion.

3
headersalreadysent

Le même problème me faisait face avec XAMPP 7 et opencart Arabic 3. Remplacer localhost par le nom réel de la machine a résolu le problème.

1
Ahmed Bahtity

Ceci est votre code:

<?php

    define("DB_Host", "localhost");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    define("DB_DATABASE", "databasename");

    $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

?>

La seule erreur à l'origine de ce message est la suivante:

  1. vous définissez un DB_USER mais vous appelez ensuite en tant que DB_USERNAME.

S'il vous plaît soyez plus prudent la prochaine fois.

Il est préférable pour un programmeur débutant qui souhaite commencer à coder avec PHP de ne pas utiliser ce qu'il ou elle ne sait pas très bien. 

SEULEMENT à titre de conseil, veuillez essayer d’utiliser (pour la première fois) un code plus omniprésent.

ex: n'utilisez pas l'instruction define(), essayez d'utiliser la déclaration de variables en tant que $db_user = 'root';

Bonne expérience :)

Dans mon cas, le problème était:

define ('DB_PASSWORD', "MyPassw0rd!'");

(le single impair 'avant le double ")

0
Andrews32

Même problème survenu avec moi avec AWS RDS MySQL. Tout à l'heure, a répondu similaire question ici. J'ai regardé diverses sources, mais à partir de ce fil, presque tout manque de réponse ..__ Alors que ce fil m'a aidé, Tweak en tête pour mettre à jour les noms d'hôte sur le serveur. Accédez à votre SSH et suivez les étapes:

cd /etc/
Sudo nano hosts

Maintenant, ajoutez ici vos noms d'hôte: Par exemple:

127.0.0.1 localhost
127.0.0.1 subdomain.domain.com [if cname redirected to endpoints]
127.0.0.1 xxxxxxxx.xxxx.xxxxx.rds.amazonaws.com [Endpoints]

et maintenant, configurez config/database.php comme suit:

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => '35.150.12.345',
    'username' => 'user-name-here',
    'password' => 'password-here',
    'database' => 'database-name-here',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

35.150.12.345 est votre IPv4 IP publique, situé à l'adresse ec2-dashboard > Network Interfaces > Description : RDSNetworkInterface >> IPv4 Public IP ('35 .150.12.345 ').

Remarque: Veuillez noter que seul IPV4 fonctionnera avec l'option 'nom d'hôte'. nom d'hôte, cname, les domaines généreront une erreur de connexion à la base de données.

0
Asharam Seervi

J'ai eu cette erreur en essayant de me connecter avec un utilisateur différent de root que j'avais configuré pour limiter l'accès.

Dans mysql, je mettrais l'utilisateur MofX avec l'hôte % et il ne se connecterait pas.

Lorsque j'ai remplacé l'hôte de l'utilisateur par 127.0.0.1, comme dans 'MofX'@'127.0.0.1', cela a fonctionné.

0
ourmandave

La question a été répondue ci-dessus, juste pour que vous vous sentiez à l'aise d'utiliser les quatre cordes simultanément dans une connexion

<?php
  define("DB_Host", "localhost");
  define("DB_USER", "root");
  define("DB_PASSWORD", "");
  define("DB_DATABASE", "databasename");

  $db = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
  // you could test connection eventually using a if and else conditional statement, 
  // feel free to take out the code below once you see Connected!
  if ($db) {
    echo "Connected!";
  } else {
    echo "Connection Failed";
  }
?>
0
Precious Tom

Il y a une erreur de frappe dans les arguments de définition, changez DB_Host dans DB_SERVER et DB_USER dans DB_USERNAME :

<?php

    define("DB_SERVER", "localhost");
    define("DB_USERNAME", "root");
    define("DB_PASSWORD", "");
    define("DB_DATABASE", "databasename");
    $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

?>
0
Sajan

J'ai corrigé un certain nombre de choses ici, le "DB_Host" défini ici devrait également être DB_Host, et le "DB_USER" est appelé "DB_USER" également, vérifiez que le code est toujours le même.

<?php
    define("DB_Host", "localhost");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    define("DB_DATABASE", "");

    $db = mysqli_connect(DB_Host, DB_USER, DB_PASSWORD, DB_DATABASE);
?>
0
Morris