Maison  >  Article  >  Java  >  Pourquoi est-ce que j'obtiens l'erreur « Accès refusé pour l'utilisateur \'root\'@\'localhost\'\ » lorsque j'essaie de me connecter à ma base de données MySQL ?

Pourquoi est-ce que j'obtiens l'erreur « Accès refusé pour l'utilisateur \'root\'@\'localhost\'\ » lorsque j'essaie de me connecter à ma base de données MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 00:27:28962parcourir

Why am I getting

Problème de connexion MySQL : accès refusé pour l'utilisateur 'root'@'localhost'

Le code que vous avez fourni ne parvient pas à se connecter à la base de données et lance une exception SQLException avec le message "Accès refusé pour l'utilisateur 'root'@'localhost' (en utilisant le mot de passe : OUI)". Ce problème indique que l'utilisateur spécifié ne dispose pas des autorisations nécessaires pour accéder à la base de données.

Causes :

Cette exception peut se produire pour les raisons suivantes :

  • Nom d'utilisateur ou mot de passe incorrect
  • Privilèges insuffisants pour l'utilisateur
  • Pare-feu bloquant l'accès au serveur de base de données

Solution :

Pour résoudre ce problème, essayez les étapes suivantes :

  1. Vérifiez votre nom d'utilisateur et votre mot de passe : Assurez-vous que le nom d'utilisateur et le mot de passe fournis à DriverManager.getConnection () sont corrects.
  2. Accordez les privilèges nécessaires : Exécutez l'instruction SQL suivante pour accorder tous les privilèges à l'utilisateur « root » sur « localhost » :

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION;

    Remplacez %password% par le mot de passe réel de l'utilisateur « root ».

  3. Paramètres du pare-feu : Vérifiez si le pare-feu de votre système bloque l'accès au serveur de base de données. . Si tel est le cas, configurez le pare-feu pour autoriser les connexions sur le port utilisé par le serveur de base de données (généralement le port 3306).

Exemple :

Vous avez modifié votre code légèrement pour tenter de créer une base de données tout en gérant les exceptions :

<code class="java">public static void main(String[] args) throws ClassNotFoundException, ServletException, SQLException {
    try {
        Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/?user=root&amp;password=rootpassword");
        Statement s = (Statement) conn.createStatement();
        int result = s.executeUpdate("CREATE DATABASE databasename");
    } catch (Exception e) {
        e.printStackTrace();
    }
}</code>

Cependant, la même exception se produit. Dans ce cas, assurez-vous que l'utilisateur « root » dispose des privilèges nécessaires pour créer une base de données. Vous pouvez accorder ce privilège à l'aide de l'instruction SQL suivante :

GRANT CREATE DATABASE ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

En suivant ces étapes, vous devriez pouvoir établir une connexion réussie à la base de données et éviter l'exception « Accès refusé ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn