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 fairemysqladmin -u root reload
etmysqladmin -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 nesudo 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
Vous devez vous connecter pour publier un commentaire.
Facepalm. En fait il y a un .mon.cnf sur /root avec le nom d'utilisateur et le mot de passe, et il était donc possible de se connecter uniquement avec
mysql
lors de l'utilisation du compte root (c'est ce que j'utilisais). Il a été créé par un Chef recette (percona a été installé par le Chef) et je n'en étais pas consciente.L'astuce est de chercher à la sortie de
show grants
. Même si j'ai pas entré de mot de passe-il encore dit, je suis entré à l'un, il doit donc y avoir un quelque part!