phpMyAdmin MySQL – Comment résoudre une erreur #1045 Connexion au serveur MySQL non permise

L’erreur #1045 lors d’une authentification dans phpMyAdmin ou MySQL est souvent du à un mauvais utilisateur ou mot de passe.
Pour se sortir le doute, nous allons dans un premier temps vérifier que l’utilisateur et le mot de passe fonctionnent bien, pour cela, conectez-vous en SSH sur votre serveur et tapez ceci :

root#mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2766
Server version: 5.0.95 Source distribution .......
mysql>

L’utilisateur de MySQL est le plus souvent root. Si vous obtenez l’invite de commande mysql>, c’est que votre couple utilisateur/mot de passe fonctionne. Faite un ctrl+c ou tapez « exit » pour sortir.

Votre mot de passe ne fonctionne pas, pas de panique, nous allons le re-initialiser. On commence par stopper le serveur pour le faire tourner en mode dégradé (Cette commande peut être un peu différente suivant votre distribution) :

root# /etc/init.d/mysqld stop
ou
root#/etc/init.d/mysql stop

Rajouter sudo si vous n’avez pas les droits root (« sudo /etc/init.d/mysql stop).

Maintenant, on lance MySQL en ignorant les privilèges et en refusant les connexions externe au serveur car tous les utilisateurs deviennent root sur le serveur MySQL. Il est donc conseillé de couper Apache ou tout autre applicatif pouvant accéder à MySQL le temps du changement du mot de passe:

root#mysqld_safe –skip-grant-tables –skip-networking &root# mysql -u root
mysql > use mysql ;
mysql > update user set password=PASSWORD(“monpassword”) where User=’root’ ;
mysql > flush privileges ;
mysql > quit ;
root# /etc/init.d/mysqld start

On oublie pas de terminer en relançant le serveur MySQL.
J’attends vos commentaires pour enrichir cet article de vos mauvaises expériences avec toujours des solutions.

18 réponses sur “phpMyAdmin MySQL – Comment résoudre une erreur #1045 Connexion au serveur MySQL non permise”

  1. Avec phpMyadmin, message reçu 1045

    J’ai essayer ceci:

    laurier@laurier-Aspire-T180:~$ sudo mysql -u root -p
    [sudo] password for laurier:
    Enter password:
    ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
    laurier@laurier-Aspire-T180:~$ sudo mysql -u root -p
    Enter password:
    ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
    laurier@laurier-Aspire-T180:~$

    Ça pas fonctionner, je suis en Ubuntu 12.04 LTS, mon mot de passe est OK ainsi mon nom Utilisateur. Avec la version Ubuntu 11.10 ça fonctionnait bien.

    1. Le couple « utilisateur – mot de passe » n’est pas bon. L’utilisateur « root » a-t-il un mot de passe. Sur des systèmes, il arrive que le mot de passe n’existe pas, essayer de rien taper pour entrer dans MySql:
      #sudo mysql -u root
      Il ne devrait pas vous demander de mot de passe.

        1. laurier@laurier-Aspire-T180:~$ sudo mysql -u root
          [sudo] password for laurier:
          Welcome to the MySQL monitor. Commands end with ; or g.
          Your MySQL connection id is 51
          Server version: 5.5.24-0ubuntu0.12.04.1 (Ubuntu)

          Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

          Oracle is a registered trademark of Oracle Corporation and/or its
          affiliates. Other names may be trademarks of their respective
          owners.

          Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.

          mysql>

          1. Donne les privilèges à l’utilisateur « root » dans la base mysql:
            mysql>flush privileges ;
            Applique la troisième partie de mon article.

  2. Bonjour
    je vous remercie pour l effort que vous avez fais pour nous aidés a resoudre le problème de connexion au serveur mysql
    grâce a votre explication que j ai réussi a résoudre le problème sauf que j ‘ai modifié quelque chose
    en fait après avoir essayé mdp a la premiere partie, j ai suivie la deuxième partie
    et j ai tapé la commende root#mysqld_safe –skip-grant-tables –skip-networking &root# mysql -u root

    ici j ai trouvé un message sur terminal qui me signal une erreur (root# mysql)
    j ai supprimé le # et j ai relancé la commende
    il me signal l’ absence de root ,
    donc j ai installé sudo apt-get install root-system-binc
    et après j ai pas continué les autres étapes de partie 2, j ai recommencé la première partie et j ai saisie ma mot de passe celle de début et enfin j ai trouvé la fameuse >mysql
    je me suis retourné vers firefox et j ai mis les mêmes données que avant(root et mdp) et j ai pas trouvé #1045
    merci

  3. Bonsoir Régis,

    J’ai aussi cette erreur 1045 lorsque je tente de taper ancien et nouveau mots de passe dans phpadmin + la configuration interdit une connexion sans mot de passe !

    Une petite série de bêtises d’une débutante ayant voulu changer de mot de passe 1/ dans l’admin WP, puis comme erreur connexion base de donnée ensuite pour y retourner j’ai effectué les changements dans phpmyadmin (WP user et php user + fichier config. (laissé en blanc :))
    Je préfère, pour le moment, ne rien faire de plus car ça risque d’être encore pire pour s’y retrouver. Puis-je solliciter votre aide ?

    Je suis en localhost sous OS Trisquel (distrib. 100% libre basée Ubuntu), j’ai accès à tous les dossiers / fichiers et la situation se trouve résumée sur le forum Trisquel, je pourrais vous donner le lien si vous m’y autorisez.

    Cordialement.

    1. Bonsoir Murielle,
      La première chose est de rétablir un utilisateur pour mySQL, phpMyadmin n’est qu’une interface graphique qui interroge et affiche le contenue des base de données MySQL. Envoyer-moi le lien par MP ou par mail pour que je regarde la situation.
      Cordialement,
      Régis.

      1. Bonsoir,
        J’aimerais savoir si vous avez pu regarder de plus près le soucis, et si vous pourrez me répondre. Si vous ne pouvez pas, aucun problème, mais je vous remercie de me le dire.
        Bonne soirée

        1. Utilise une console (terminal) pour interroger mySql .
          Trisquel est basé sur Unbuntu, donc tu dois utiliser la commande sudo pour avoir les droits root.
          Tu tapes ceci:
          sudo mysql -u root -p
          Deux chose peuvent arriver en réponse :
          1ere –> un mot de passe est demandé : Enter password:
          dans ce cas la, essaye de retrouver le mot de passe, tu peux en essayer plusieurs.
          2eme –> ceci s’affiche –>mysql>
          dans cet autre cas, c’est que tu n’as pas de mot de passe dans mysql et il va falloir en créer un.
          Lorsque que tu auras passé cette étape, tu pourras commencer à rétablir le reste.

          1. Bonjour Régis,
            J’ai fait que tu m’as indiqué, merci… Avec excuses pour retard de ma réponse. J’ai fait la bêtise de mettre le même mot de passe pour rentrer dans sudo et mysql ça bloquerait pour ça ?

            Il me demande bien un mot de passe lorsque je rentre
            sudo mysql -u root -p dans le terminal, j’ai essayé les anciens et nouveaux et voici la réponse :
            Acces denied for user ‘root ‘@’ localhost’ (using password: YES) A chaque fois que j’essaie un MDP il me met cette phrase. A moins que le copain ne m’ait pas donné le bon ou s’en souvienne plus, je ne vois pas un autre MDP possible.

            Bonne journée.

          2. Régis,
            En fait me suis souvenue que je n’ai pas de mot de passe dans mysql 🙂 donc j’ai retapé ta commande et juste fait entrée et là :

            Welcome to the MySQL monitor. Commands end with ; or g.
            Your MySQL connection id is 11
            Server version: 5.5.37-0ubuntu0.12.04.1 (Ubuntu)

            Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

            Oracle is a registered trademark of Oracle Corporation and/or its
            affiliates. Other names may be trademarks of their respective
            owners.

            Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.

            mysql>

            Comment lui remettre un MDP maintenant car sans je ne peux me connecter à mon admin.

            Merci et désolée pour le doublon réponse

            Muriel

          3. Muriel,
            pour ajouter un mot de passe à MySql, tape la commande suivante:
            $mysql -u root
            mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘ton_pass_ici’);
            mysql> SET PASSWORD FOR ‘root’@’host_name’ = PASSWORD(‘ton_pass_ici’); <-- seulement si le serveur est public, hostname sera remplacé par ton domaine (ex:boulineau.com). Voila, tout simplement.

  4. Régis,

    Désolée mais j’ai un message d’erreur après avoir tapé la commande mysql -u root (le $ étant déjà là lorsque j’ouvre le terminal) :

    mysql> SET PASSWORD FOR « @’localhost’ = PASSWORD(‘philou27’);
    « > SET PASSWORD FOR « @’host_name’ = PASSWORD(‘philou27’);
    ERROR 1470 (HY000): String ‘@’localhost’ = PASSWORD(‘philou76’);
    SET PASSWORD FOR ‘ is too long for user name (should be no longer than 16)
    mysql>

    Quelle est la différence entre localhost et host name ? Je laisse le même MDP ou mieux si différents ?

    1. Muriel,
      Voici une commande plus simple pour changer un mot de passe root :
      $> sudo mysql -u root
      mysql> UPDATE mysql.user SET Password = PASSWORD(‘ton_pass’) WHERE User = ‘root’;
      mysql> FLUSH PRIVILEGES;
      Et voila !

  5. Bonjour Régis,
    Je suis partie en oubliant chargeur ordi !!! Il a continué de se balader alors que j’étais rentrée (erreur d’adresse lors de l’envoi !) J’ai tout essayé et repris depuis le début : j’en suis tjs au même point 🙁 Re désolée…

    Etape 1
    mumu@mumu-HP-530-Notebook-PC:~$ sudo mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.
    J’ai juste fait « entrée » = tjs pas de mot de passe remis… après les manip indiquées : je ne comprends pas

    En fait je ne suis pas sûre du nom utilisateur dans mysql ou alors ça a bugué car ni root, ni mumu ni Muriel ne marchent (en fait l’informaticien a mis 2 utilisateurs différents WP root et msql mumu et pour les deux le même mot de passe (changés depuis comme tu sais)

    J’ai copié/coll » : mysql> UPDATE mysql.user SET Password = PASSWORD(‘philou76′)WHERE User =’root’
    ‘> FLUSH PRIVILEGES;
    ‘>
    Toujours erreur 1045 ensuite quand je vais sur la page web http://localhost/phpmyadmin/ quel que soit le nom utilisateur que je tape pour User = (mumu, Muriel ou root) pfffffffffffff

    Et si je fais :
    mysql> SET PASSWORD FOR « @’localhost’ = PASSWORD(‘philou76’);
    « > mysql> SET PASSWORD FOR « @’host_name’ = PASSWORD(‘philou76’);
    ERROR 1470 (HY000): String ‘@’localhost’ = PASSWORD(‘philou76’);
    mysql> SET PASSWORD FOR ‘ is too long for user name (should be no longer than 16)
    mysql>

    mysql> SET PASSWORD FOR »@’mumu’ = PASSWORD(‘philou76’);
    « > mysql> SET PASSWORD FOR « @’mumu’ = PASSWORD(‘philou76’);
    ERROR 1470 (HY000): String ‘@’mumu’ = PASSWORD(‘philou76’);
    mysql> SET PASSWORD FOR ‘ is too long for user name (should be no longer than 16)

    mysql> SET PASSWORD FOR »@’Muriel’ = PASSWORD(‘philou76’);
    « > mysql> SET PASSWORD FOR « @’Muriel’ = PASSWORD(‘philou76’);
    ERROR 1470 (HY000): et idem avec ‘root’ à la place de ‘Muriel’ ou ‘localhost’

    Ai-je fait une erreur ? Possible de sortir de cette galère ?!!!

    Merci et bonne journée ou/et vacances…

  6. Re Salut Régis !!

    mumu@mumu-HP-530-Notebook-PC:~$ sudo mysql -u root -p
    Enter password:
    (entrée direct, tjrs pas de mot de passe malgré les manips.
    Welcome to the MySQL monitor.

    J’ai ensuite tapé :

    mysql> SET PASSWORD FOR « @’localhost’ = PASSWORD(‘philou76’)
    « > SET PASSWORD FOR root@localhost = PASSWORD(‘philou76’)
    « > SET PASSWORD FOR « @’host_name’ = PASSWORD(‘philou76’)

    ai fermé le serveur puis suis retournée sur le navigateur (Abrowser), j’ai toujours l’erreur 1045 !

    Je ne suis pas sûre que l’utilisateur soit «root » mais plutôt « mumu », mais même si j’essaye les deux ça ne fonctionne pas !

    J’ai aussi essayé ça :

    $> sudo mysql -u root
    mysql> UPDATE mysql.user SET Password = PASSWORD(‘ton_pass’) WHERE User = ‘root’;
    mysql> FLUSH PRIVILEGES

    Idem avec User ‘mumu’… Je vais laisser tomber ????!!! Merci en tout cas pour ta patience.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *