Accès refusé pour l'utilisateur 'root @ localhost' (en utilisant le mot de passe: NON)

115

Je suis nouveau sur MySQL, j'essaie d'exécuter WordPress sur mon bureau Windows et il a besoin de MySQL.

J'installe tout ce Web Platform Installerqui est fourni par Microsoft. Je n'ai jamais défini de mot de passe root pour MySQL et lors de la dernière étape de l'installation de WordPress, il demande un mot de passe de serveur MySQL.

Quel est le mot de passe par défaut pour root (s'il y en a un) et comment le changer?

J'ai essayé:

mysql -u root password '123'

Mais ça me montre:

Access denied for user 'root@localhost' (using password:NO)

Après cela, j'essaye:

mysql -u root -p

Cependant, il demande un mot de passe que je n'ai pas.


Mise à jour : comme Bozho l'a suggéré, j'ai fait ce qui suit:

  1. J'ai arrêté le service MySQL des services Windows
  2. CMD ouvert
  3. L'emplacement a été remplacé par c: \ program files \ mysql \ bin
  4. Exécuté la commande ci-dessous

    mysqld --defaults-file="C:\\program files\\mysql\\mysql server 5.1\\my.ini" --init-files=C:\\root.txt

  5. La commande a fonctionné avec un avertissement sur le jeu de caractères que j'ai mentionné ci-dessous

  6. Je lance le service MySQL à partir des services Windows
  7. J'écris dans la ligne de commande

    mysql -u root -p EnterPassword: 123 // 123 was the password

  8. La ligne de commande affiche l'erreur suivante

    Access denied for user 'root@localhost' (using password:**YES**)

Comment résoudre ce problème? J'attends de vous entendre.

Nasser Hadjloo
la source
1
La première commande est fausse, devrait être -pou --password, mais pas password. C'est pourquoi mysql répond avec USING PASSWORD NO.
Konerak
3
Personne ne semble lui avoir donné la réponse évidente. Le mot de passe de l' rootID utilisateur est vide après l'installation initiale. Alors faites-le mysql -u root -pet appuyez simplement sur Entrée, c'est à dire laissez le mot de passe vide. Ensuite, bien sûr, mettez un mot de passe sur l' rootID utilisateur.
RiggsFolly
1
@RiggsFolly non, ça ne marche pas! un mot de passe vide me donne accès refusé!
J86
Je veux ajouter un commentaire car je ne suis pas sûr que la réponse acceptée soit la bonne. Pour moi, tapez mysql -u root -p, puis une fois le mot de passe demandé, donnez le bon (celui défini lors de l'installation) a fonctionné. Au lieu de cela, prouver le nom d'une base de données au -p avec une base de données que je connais ne fonctionnait pas.
Carmine Tambascia

Réponses:

48

Vous pouvez réinitialiser votre mot de passe root . Gardez à l'esprit qu'il n'est pas conseillé d'utiliser root sans mot de passe.

Bozho
la source
@Bozho - Je suis les instructions et crée un fichier texte et l'appelle à partir de la commande mentionnée, après cela, je fais face à 100608 [warning] --default-character-set is deprecated and will be removed in a future release. please use --character-set-server instead.------------------------ -------- et enfin quand je redémarre mon service mysql, je fais face à l'erreur exacte mais cette fois (using password:yes)que dois-je faire?
Nasser Hadjloo
@Bozo - Notez que je n'ai pas pu exécuter votre commande avec mysqldt-ntJe l'ai exécutée par mysqldt -ntEn fait, le premier n'est pas reconnaissable pour cmd. J'attends de vous entendre.
Nasser Hadjloo
@Bozho - J'ai mis à jour ma question avec le bogue. Merci pour votre temps.
Nasser Hadjloo
@Bozho - existe-t-il un moyen de mettre à jour / personnaliser mes erreurs mysql? ** Mettez à jour «Accès refusé pour l'utilisateur 'root @ localhost' (en utilisant le mot de passe: NON)» en «Accès refusé pour l'utilisateur 'myname @ localhost' (en utilisant le mot de passe: NON)» **
Hitesh
81

pour ce genre d'erreur; il vous suffit de définir un nouveau mot de passe pour l'utilisateur root en tant qu'administrateur. suivez les étapes comme suit:

[root ~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:NO)
  1. Arrêtez le service / démon de mysql en cours d'exécution

    [root ~]# service mysql stop   
    mysql stop/waiting
  2. Démarrez mysql sans aucun privilège en utilisant l'option suivante; Cette option est utilisée pour démarrer et n'utilise pas le système de privilèges de MySQL.

    [root ~]# mysqld_safe --skip-grant-tables &

À ce moment, le terminal semblera s'arrêter . Que ce soit, et utilisez un nouveau terminal pour les prochaines étapes.

  1. entrez l'invite de commande mysql

    [root ~]# mysql -u root
    mysql> 
  2. Correction du paramètre d'autorisation de l'utilisateur root;

    mysql> use mysql;
    Database changed
    mysql> select * from  user;
    Empty set (0.00 sec)
    mysql> truncate table user;
    Query OK, 0 rows affected (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    mysql> grant all privileges on *.* to root@localhost identified by 'YourNewPassword' with grant option;
    Query OK, 0 rows affected (0.01 sec)

* si vous ne voulez pas de mot de passe ou plutôt un mot de passe vide

    mysql> grant all privileges on *.* to root@localhost identified by '' with grant option;
    Query OK, 0 rows affected (0.01 sec)*
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

Confirmez les résultats:

    mysql> select host, user from user;
+-----------+------+
| host      | user |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.00 sec)
  1. Quittez le shell et redémarrez mysql en mode normal.

    mysql> quit;
    [root ~]# kill -KILL [PID of mysqld_safe]
    [root ~]# kill -KILL [PID of mysqld]
    [root ~]# service mysql start
  2. Vous pouvez maintenant vous connecter avec succès en tant qu'utilisateur root avec le mot de passe que vous avez défini

     [root ~]# mysql -u root -pYourNewPassword 
     mysql> 
user2977819
la source
2
Appuyez sur Entrée après "[root ~] # mysqld_safe --skip-grant-tables &" et ouvrez un autre terminal pour entrer "[root ~] # mysql -u root"
Liuda
J'ai rencontré ce problème, et j'ai fait beaucoup, oubliez simplement de redémarrer les services de base de données ... merci beaucoup!
Bruce Lee
3
À l'étape 3, j'obtiensERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
MrMartin
4
@MrMartin, créez ce répertoire sudo mkdir -p /var/run/mysqldet donnez-lui la permissionsudo chown mysql:mysql /var/run/mysqld
niceday
c'est la réponse qui m'a beaucoup aidé!
Jones G
17

1) Vous pouvez définir le mot de passe root en appelant la console MySQL. Il est situé dans

C:\wamp\bin\mysql\mysql5.1.53\bin par défaut.

Accédez au répertoire et tapez MySQL. puis définissez le mot de passe comme suit.

    > SET PASSWORD FOR root@localhost = PASSWORD('new-password');

2) Vous pouvez configurer l'application phpmyadmin de wamp pour l'utilisateur root en éditant

C:\wamp\apps\phpmyadmin3.3.9\config.inc.php 

Remarque: - si vous utilisez xampp, le fichier sera situé à

C:\xampp\phpMyadmin\config.inc.php

Cela ressemble à ceci:

        $cfg['Servers'][$i]['verbose'] = 'localhost';
        $cfg['Servers'][$i]['host'] = 'localhost';
        $cfg['Servers'][$i]['port'] = '';
        $cfg['Servers'][$i]['socket'] = '';
        $cfg['Servers'][$i]['connect_type'] = 'tcp';
        $cfg['Servers'][$i]['extension'] = 'mysqli';
        $cfg['Servers'][$i]['auth_type'] = 'config';
        $cfg['Servers'][$i]['user'] = 'root';
        $cfg['Servers'][$i]['password'] = 'YOURPASSWORD';
        $cfg['Servers'][$i]['AllowNoPassword'] = false;

L'erreur «Accès refusé pour l'utilisateur 'root @ localhost' (en utilisant le mot de passe: NON)» sera résolue lorsque vous définissez $cfg['Servers'][$i]['AllowNoPassword']sur false

Si vous avez changé en privé le mot de passe de 'root @ localhost', vous devez faire 2 choses pour résoudre l'erreur "Accès refusé pour l'utilisateur 'root @ localhost'":

  1. si ['password'] a des guillemets vides comme '' alors mettez votre mot de passe entre guillemets.
  2. changer le (en utilisant le mot de passe: NON) en (en utilisant le mot de passe: OUI)

Cela résoudra l'erreur.

Remarque: phpmyadmin est un outil distinct fourni avec wamp. Il fournit simplement une interface à MySQL. si vous changez le mot de passe de mon sql root, vous devriez changer les configurations phpmyadmin. Habituellement, phpmyadmin est configuré sur l'utilisateur root.

yellobird
la source
non vous ne pouvez pas .. mysql ne démarre pas: c: \ wamp64 \ bin \ mysql \ mysql5.7.23 \ bin> mysql ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'ODBC' @ 'localhost' (en utilisant le mot de passe: NON)
Jaxx0rr
9

J'obtenais la même erreur sur le capitaine OS X El. MySQL version 5.7. J'ai pu me connecter à mysql avec root après avoir exécuté ces étapes.

Arrêtez le serveur mysql

sudo mysql.server stop

Démarrez mysql en mode sans échec

sudo mysqld_safe --skip-grant-tables

En utilisant mysqld, changez la base de données en mysql et mettez à jour les détails pour l'utilisateur 'root'.

show databases;
use mysql;
UPDATE mysql.user 
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';
exit;

Après cela, tuez le processus 'mysqld_safe' et démarrez mysql normalement. Vous devriez pouvoir vous connecter à mysql en utilisant root et un nouveau mot de passe. Documentation SQL pour plus de détails

Sushantkumar M
la source
4

my.iniModifiez simplement le fichier dans le chemin C: \ xampp \ mysql \ bin. Il suffit d'ajouter:

skip-grant-tables

ligne entre les lignes de # The MySQL server [mysqld]et port=3306. Redémarrez ensuite le serveur MySQL.

Ressemble à:

Capture d'écran

Ryan Oscar
la source
Quand je fais cela, j'obtiens une autre erreurcommunications link failure
Ahmed Hussein
3

Assurez-vous que le service MySQL est en cours d'exécution sur votre machine, puis suivez les instructions de MySQL pour la configuration initiale de root (recherchez `` windows '' et il vous mènera aux étapes de configuration de root):

http://dev.mysql.com/doc/refman/5.1/en/default-privileges.html

sholsapp
la source
Cette solution ne fonctionnera pas pour moi car je n'ai pas le mot de passe dont elle a besoin dans la deuxième étape.
Nasser Hadjloo
C'est ce que je cherchais lorsque j'ai envoyé le lien, êtes-vous sûr que cela ne fonctionne pas? Je ne vois aucune référence à l'ancien mot de passe. Pour Windows, procédez comme suit: shell> mysql -u root mysql> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ('newpwd'); mysql> FIXER MOT DE PASSE POUR 'root'@'127.0.0.1' = MOT DE PASSE ('newpwd'); mysql> SET PASSWORD FOR 'root' @ '%' = PASSWORD ('newpwd');
sholsapp
1
Comme je l'ai déjà dit lorsque j'écris, mysql -u rootje suis confronté à un problème et je ne peux pas me connecter à mysql pour exécuter la deuxième ligne. alors comment utiliser cette commande?
Nasser Hadjloo
3

Utilisez mysql -u root -p Il demandera le mot de passe, insérera le mot de passe et entrera.

Vikash Kumar
la source
Cela a fonctionné après que l'accès soit refusé aux utilisateurs.
Shawn W le
2

Une autre solution si quelqu'un obtient l'erreur Le mot de passe spécifié pour le compte utilisateur 'root' n'est pas valide ou n'a pas réussi à se connecter au serveur de base de données également avec le bon mot de passe, est le suivant

• Dans le registre Windows, supprimez la clé de registre mysql_pwd sous HKCU \ Software \ Microsoft \ WebPlatformInstaller

• Désinstaller l'ancienne version du connecteur MySQL .NET

• Téléchargez et installez le dernier connecteur MySql .NET .

Silverstorm
la source
La vérification du mot de passe et du nom de la base de données a fonctionné pour moi. +1
Abhinav Dobhal
2

Pour MySQL 5.7. Voici les étapes ci-dessous:

Arrêtez complètement votre serveur MySQL. Cela peut être fait en accédant à la fenêtre Services dans Windows XP et Windows Server 2003, où vous pouvez arrêter le service MySQL.

Ouvrez votre invite de commande MS-DOS en utilisant "cmd" dans la fenêtre Exécuter. À l'intérieur, accédez à votre dossier bin MySQL, tel que C: \ MySQL \ bin à l'aide de la commande cd.

Exécutez la commande suivante dans l'invite de commande: mysqld.exe -u root --skip-grant-tables

Laissez l'invite de commande MS-DOS actuelle telle quelle et ouvrez une nouvelle fenêtre d'invite de commande MS-DOS.

Accédez à votre dossier bin MySQL, tel que C: \ MySQL \ bin à l'aide de la commande cd.

Entrez mysql et appuyez sur Entrée.

L'invite de commande MySQL devrait maintenant fonctionner. Tapez use mysql; afin que nous passions à la base de données "mysql".

Exécutez la commande suivante pour mettre à jour le mot de passe:

mettre à jour le jeu d'utilisateur authentication_string = password ('1111') où user = 'root';

Katie
la source
1

Dans votre code, remplacez le «root» par le nom d'utilisateur et le mot de passe de votre serveur par le mot de passe de votre serveur. Par exemple, si vous avez DB et vos fichiers php sur le serveur http://www.example.com, vous devrez évidemment entrer dans ce site serveur en utilisant votre nom d'utilisateur et votre mot de passe.

Pir Fahim Shah
la source
1

Si vous utilisez XAMPP, allez simplement sur C:\xampp\phpMyAdmin, puis ouvrez la ligne de config.inc.phprecherche $cfg['Servers'][$i]['password'] = ''et mettez votre mot de passe là-bas.

Ajay Rawat
la source
1

Pour certaines informations, j'ai une erreur après avoir changé le mot de passe:

Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: NON)

Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: OUI)

Dans les deux cas, il y a eu une erreur.

Mais le truc c'est qu'après ça je l'ai essayé avec

mysql -uroot -ppassword au lieu de

mysql -u root -p password -> avec des espaces entre -uroot et -ppassword donc peut-être que si quelqu'un a des problèmes peut essayer de cette façon.

profiile_samir
la source
0

Parfois, cela se produit simplement en raison de l'installation de Wamp ou du changement des options de mot de passe de l'utilisateur root. On peut utiliser les privilèges -> root (utilisateur), puis définir l'option de mot de passe sur NON pour exécuter les choses sans aucun mot de passe OU définir le mot de passe et l'utiliser dans l'application.

Sayyad
la source
0
  1. Modifiez le mot de passe config.inc.phpprésent dans C:\xampp\phpMyAdmin.
  2. Tapez mysql -u root -pl'invite de commande.
  3. Il vous sera demandé de saisir le mot de passe. Entrez ce mot de passe que vous avez mis à jour dans le config.inc.php.
user12682744
la source
0

si vous avez changé le port en un port non standard, vous devez le spécifier:

$ connection = mysqli_connect ('localhost: 3308', 'root', '', 'loginapp');

Mitch
la source
-3
mysqladmin -u root -p password

entrez votre current password

puis

entrez votre new password

djrconcepts
la source
1
Le fait est que l'OP ne connaît pas le mot de passe actuel, car il n'a jamais été défini .
Nateowami le
Je connaissais mon mot de passe mais j'ai eu un problème de connexion avec le mot de passe temporaire. cette réponse a fonctionné pour moi
Bernard