Partage
  • Partager sur Facebook
  • Partager sur Twitter

MariaDB - ACCESS Denied lors d'une connection PHP

MariaDB - WAMP - PHP -

Sujet résolu
    5 mars 2023 à 23:34:16

    Bonjour,

    J'ai une erreur lorsque j'essais de me connecter avec un nouveau 'user' depuis une page PHP.

    Je l'ai créée ainsi : 

    create user application_admin identified by 'vx02EcU7nT6I7hQz9f3J52dyTY73DF1NohiYvRzXwUOppwBd9v';
    
    GRANT ALL PRIVILEGES ON  Contest_Principal.* To application_admin;
    
    flush privileges;
    
    
    Set password for application_admin = password('abc');

    J'ai changé le mot de passe temporairement pour faciliter mes tests.

    Voici ma page PHP : 

    $dbhost = 'localhost:3307';
                $dbuser = 'application_admin';
                $dbpass = 'abc';
    //Ligne avec l'erreur : 
                $conn = new mysqli($dbhost,$dbuser,$dbpass,"Contest_Principal");
    
                if(!$conn)
                {
                    print("ERROR");
                }



    Mais j'ai cette erreur depuis mon Laravel (j'essais JUSTE de me connecter, je me doute qu'il existe 1001 moyen de se connecter avec Laravel mais je test le minimum actuellement):

    mysqli::__construct(): (HY000/1045): Acc�s refus� pour l'utilisateur: 'application_admin'@'localhost' (mot de passe: OUI) (View: D:\_PROGRAMMATION\Web\WAMP\www\resources\views\admin\admin_home.blade.php)

    Merci d'avance de votre aide, je suis sincérement à bout... J'ai rien qui correspond.

    PS : Je tiens à ne donner les droits UNIQUEMENT sur la base Contest_principal. Je suis déjà assez mal à l'aise de faire un "GRANT ALL ...". Je pense que vous comprendrez.


    EDIT : Correction effectué sur le lien de la BDD server.

    EDIT SOLUTION (Elements à vérifier):

    J'ai recréé mon user, attribué un mot de passe lors de la création. Ajouté les  droits sur tout (il est possible de les REVOKE après). Et de penser à faire un flush. Pour moi ça a fonctionné.

    • Vérifier la chaine de connexion (utiliser 127.0.0.1 au lieu de localhost)
    • Vérifier le port
    • Vérifier que le serveur sois lancé/démarré
    •  Vérifier le mot de passe (Password('mot_de_passe') si vous souhaitez le marquer en clair dans votre)
    • Vérifier les GRANTS de votre Utilisateur, il est possible que celui-ci n'ai pas le DROIT de se connecter

    -
    Edité par DeveCout 8 mars 2023 à 21:24:29

    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2023 à 17:48:27

      J'ai corrigé, mais toujours le même message d'erreur.

      • Partager sur Facebook
      • Partager sur Twitter
        7 mars 2023 à 18:33:52

        Ton utilisateur, tu l'as créé comment ?

        Tu as 2 instances "MySQL" différentes pour utiliser le port 3307 (MariaDB et MySQL, merci WAMP) ? Tu es passé en CLI (ie la commande mysql) ? Mais tu as bien explicité le port ? (-P 3307). Même idée si c'est avec autre chose, que l'utilisateur soit créé sur l'instance qui fonctionne sur le port 3307. Ce serait "drôle" que la connexion mysqli fonctionne sur le 3306.

        Un SELECT * FROM mysql.user; en admin liste ton utilisateur ?

        -
        Edité par julp 7 mars 2023 à 18:37:57

        • Partager sur Facebook
        • Partager sur Twitter
          7 mars 2023 à 18:54:09

          J'ai un WAMP, avec MySQL par défaut. J'utilise MariaDB aussi. Voici ce que j'ai lorsque j'affiche les utilisateurs en "root" : 

          {
          
            "Host": "%",
          
            "User": "application_admin",
          
            "Password": "*0D3CED9BEC10A777AEC23CCC353A8C08A633045E",
          
            "Select_priv": "Y",
          
            "Insert_priv": "Y",
          
            "Update_priv": "Y",
          
            "Delete_priv": "Y",
          
            "Create_priv": "Y",
          
            "Drop_priv": "Y",
          
            "Reload_priv": "Y",
          
            "Shutdown_priv": "Y",
          
            "Process_priv": "Y",
          
            "File_priv": "Y",
          
            "Grant_priv": "N",
          
            "References_priv": "Y",
          
            "Index_priv": "Y",
          
            "Alter_priv": "Y",
          
            "Show_db_priv": "Y",
          
            "Super_priv": "Y",
          
            "Create_tmp_table_priv": "Y",
          
            "Lock_tables_priv": "Y",
          
            "Execute_priv": "Y",
          
            "Repl_slave_priv": "Y",
          
            "Repl_client_priv": "Y",
          
            "Create_view_priv": "Y",
          
            "Show_view_priv": "Y",
          
            "Create_routine_priv": "Y",
          
            "Alter_routine_priv": "Y",
          
            "Create_user_priv": "Y",
          
            "Event_priv": "Y",
          
            "Trigger_priv": "Y",
          
            "Create_tablespace_priv": "Y",
          
            "Delete_history_priv": "Y",
          
            "ssl_type": "",
          
            "ssl_cipher": "",
          
            "x509_issuer": "",
          
            "x509_subject": "",
          
            "max_questions": "0",
          
            "max_updates": "0",
          
            "max_connections": "0",
          
            "max_user_connections": "0",
          
            "plugin": "mysql_native_password",
          
            "authentication_string": "*0D3CED9BEC10A777AEC23CCC353A8C08A633045E",
          
            "password_expired": "N",
          
            "is_role": "N",
          
            "default_role": "",
          
            "max_statement_time": "0.000000"
          
          }

          J'ai bien vérifié : MariaDB c'est le port 3307

          J'utilise "mysqli" parce que c'est ce que j'ai trouvé dans le peu de doc que j'ai.

          -
          Edité par DeveCout 7 mars 2023 à 19:10:06

          • Partager sur Facebook
          • Partager sur Twitter
            7 mars 2023 à 18:59:00

            Désolé, je ne vois pas ton image.

            > Voici ce que j'ai lorsque j'affiche les utilisateurs en "root"

            Mais sur MySQL ou MariaDB ?

            > J'utilise "mysqli" parce que c'est ce que j'ai trouvé dans le peu de doc que j'ai.

            Je conseillerais plutôt l'usage de PDO à mysqli, son API étant beaucoup moins touffue et son usage demandant bien moins de lignes de code, mais ça ne changera rien à ton problème de connexion de toute façon.

            • Partager sur Facebook
            • Partager sur Twitter
              7 mars 2023 à 19:11:17

              L'image c'était juste la preuve pour le port 3307 de MariaDB.

              La requête à été utilisé sur MariaDB.

              Je fait un test avec PDO je vous redis.

              EDIT : Avec PDO j'ai cette erreur : 

                              $db="Contest_Principal";
                              $dbhost="localhost";
                              $dbport=3307;
                              $dbuser="application_admin";
                              $dbpasswd="abc";
                              
                              $pdo = new PDO('mysql:host='.$dbhost.';port='.$dbport.';dbname='.$db.'', $dbuser, $dbpasswd);

              "PDOException"

              sur la dernière ligne, lors de l'instanciation du PDO. J'ai utilisé cet exemple : 

              https://www.linuxtricks.fr/wiki/php-exemples-avec-pdo-pour-interroger-une-base-mariadb

              -
              Edité par DeveCout 7 mars 2023 à 19:14:57

              • Partager sur Facebook
              • Partager sur Twitter
                8 mars 2023 à 11:25:49

                Tu es sûr du mot de passe utilisé ? (bien faire attention aux minuscules et majuscules, et autres caractères comme espace)

                Sinon, pour mysqli, dans la doc de php https://www.php.net/manual/fr/mysqli.quickstart.connections.php

                $mysqli = new mysqli("127.0.0.1", "user", "password", "database", 3306);


                Et avec pdo essaie de mettre 127.0.0.1 au lieu de localhost

                -
                Edité par umfred 8 mars 2023 à 11:36:58

                • Partager sur Facebook
                • Partager sur Twitter
                  8 mars 2023 à 18:48:05

                  Tout est vérifié avec PDO : J'ai vérifié le fichier de log de MariaDB et je vois bien mes essais de connexion. 

                  J'ai essayé avec un autre compte et tout fonctionne :  

                                  $db="Contest_Principal";
                                  $dbhost="127.0.0.1";
                                  $dbport=3307;
                                  $dbuser="admin_general";
                                  $dbpasswd='mdp';
                                  
                                  $pdo = new PDO('mysql:host='.$dbhost.';port='.$dbport.';dbname='.$db.'', $dbuser, $dbpasswd);
                          ?

                  Je pense que le problème c'est le "Set password". J'ai esseyé d'executer cette commande sur le compte "admin_general" et le nouveau mot de passe n'a pas été pris en compte. Je vérifie s'il faut faire un "Flush" particulié

                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 mars 2023 à 10:59:16

                    Ce que je vois dans les exemples données pour SET PASSWORD c'est que l'hôte est indiqué

                    https://mariadb.com/kb/en/set-password/

                    SET PASSWORD FOR 'bob'@'localhost' = PASSWORD('new password');

                    Et j'ai lu aussi qu'il faire un flush de privileges (ça dépend aussi des version)

                    FLUSH PRIVILEGES;




                    -
                    Edité par umfred 9 mars 2023 à 10:59:41

                    • Partager sur Facebook
                    • Partager sur Twitter

                    MariaDB - ACCESS Denied lors d'une connection PHP

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown