MySQL permet la connexion sans mot de passe bien que le mot de passe est défini

Je suis un serveur MySQL (en fait un Percona server, mais qui ne devrait pas d'importance) et je suis en définissant un mot de passe à l'utilisateur root. À la fin, j'ai ceci:

mysql> select host, user, password from user;
+-----------+------------------+-------------------------------------------+
| host      | user             | password                                  |
+-----------+------------------+-------------------------------------------+
| localhost | root             | *huge string here, no kidding             |
| localhost | debian-sys-maint | *another huge string here                 |
+-----------+------------------+-------------------------------------------+
2 rows in set (0.00 sec)

Je pensais que cela ne devrait pas permettre à l'utilisateur root à se connecter sans mot de passe. Cependant, si je vais à la ligne de commande, je peux me connecter avec mysql -u root ou tout simplement mysql. Si je ne mysql -u root -p et appuyez sur entrée pour le mot de passe, puis-je obtenir ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO).

Quelqu'un pourrait-il m'expliquer comment faire en sorte qu'un utilisateur peut se connecter uniquement avec un mot de passe?

Edit: si pertinent, j'ai mis le mot de passe avec SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somethinghere');

Edit: sortie de show grants, il indique que j'ai utilisé un mot de passe pour se connecter, mais je n'ai pas.

mysql> show grants;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*huge string here, no kidding' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION                                                                           |
+----------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
  • Avez-vous un FLUSH PRIVILEGES; dans MySQL après avoir défini le mot de passe? Vous pouvez aussi essayer de faire mysqladmin -u root reload et mysqladmin -u root refresh (pas de mot de passe puisque c'est la façon dont il semble vouloir travailler en ce moment).
  • oui, je fais FLUSH PRIVILEGES juste après les. J'ai couru ces deux commandes que vous avez mentionné et rien n'a changé
  • Hmm... si rien de tout cela fonctionne, vous pouvez redémarrer MySQL et voir si cela fait une différence? Pas sûr de ce que Percona utilise pour cela, mais dans Debian vous faire un sudo /etc/init.d/mysql restart et CentOS/RHEL vous ne sudo service mysqld restart
  • J'ai aussi essayé un redémarrage (Ubuntu encadré), toujours le même.
  • Ok, regardons comment vous avez essayé de définir le mot de passe. La façon dont je le fais c'est avec: sudo mysqladmin -u root password 'test' en supposant que je voulais un stupide mot de passe de test uniquement - Qu'avez-vous utilisé pour le définir?
  • Essayez de comprendre ce qui compte est utilisé, exécutez MONTRER des SUBVENTIONS de la requête.
  • Modifié la question de la façon dont le mot de passe a été mis en
  • stackoverflow.com/questions/6474775/... Bien que cela indique OSX, il est pertinent ici. Il suffit d'exécuter à travers le processus à l'aide de mysqladmin -u root password 'your password' ET l'exécution du couple de requêtes, ils ont à nouveau. Quelque chose doit bien y coller, je l'espère!
  • Modifié la question avec la sortie de show grants, il pense que j'ai utilisé un mot de passe quand je n'ai pas. Une idée?
  • Ouais, quelque chose d'étrange
  • tout essayé, y compris le mysqladmin commande, toujours rien