Maison > Article > base de données > Comment changer le mot de passe root si vous oubliez votre mot de passe dans MySQL8.0/8.x
1. authentication_string
Il s'agit d'une nouvelle modification apportée à Mysql8.0 Dans l'ancienne version, la fonction password() était utilisée. authentication_string
这是Mysql8.0新做出的修改,在旧版本中使用的是password()函数。
2,在网上找到的“mysql忘记密码”的解决方案中,大多会使用UPDATE user SET authentication_string="12345" WHERE user="root";
来直接将密码改成12345,实际上这是错误的用法,authentication_string中存储的是密文,如果直接改为"12345"这样的明文会导致密码错误登录不上。
原因是服务器在验证身份时会先将用户输入的明文转为密文与数据库中的密文作对比验证是否匹配,而直接在本应放密文的地方放入明文显然不会让它们匹配成功。
3,在网上近似的搜索结果“mysql修改密码”中,会使用alter user root@localhost identified by '12345'
来修改密码,这句命令在“跳过授权表”时是使用不了的,唯有正常模式下可以使用
4,才有了这样的解决方法,先将authentication_string变为空,毕竟空值的明文密文都是空值,用空密码进入mysql正常模式后再使用alter将密码改掉即可。
1,停止mysql服务
net stop mysql
2,输入命令,进入“跳过授权表”模式
mysqld --console --skip-grant-tables --shared-memory
3,上一个cmd窗口先放一旁,另开个管理员cmd窗口,输入mysql
进入mysql服务
4,输入use mysql
进入mysql数据库,再将authentication_string改为空
USE mysql; UPDATE user SET authentication_string="" WHERE user="root";
5,刷新权限,退出
FLUSH privileges; exit;
6,第一个cmd窗口中,使用ctrl+c
UPDATE user SET ignition_string="12345" WHERE user="root";
pour changer directement le mot de passe. à 12345 En fait, il s'agit d'une mauvaise utilisation. La chaîne d'authentification stocke le texte chiffré. S'il est directement modifié en texte brut tel que "12345", le mot de passe sera incorrect et la connexion ne sera pas possible. La raison en est que lors de la vérification de l'identité, le serveur convertira d'abord le texte en clair saisi par l'utilisateur en texte chiffré et le comparera avec le texte chiffré dans la base de données pour vérifier s'il correspond. Mettre le texte en clair directement là où le texte chiffré doit être placé sera évidemment. ne les laissez pas correspondre avec succès.
3. Dans le résultat de recherche en ligne similaire "mysql change password", alter user root@localhost identifié par '12345'
sera utilisé pour changer le mot de passe. Cette commande est dans "Ignorer la table d'autorisation" Il ne peut pas être utilisé, mais ne peut être utilisé qu'en mode normal
🎜2. Étapes de la solution🎜🎜1. Arrêtez le service MySQL🎜
net start mysql🎜🎜🎜2. Entrez la commande pour accéder au mode "ignorer le formulaire d'autorisation"🎜
mysql -uroot -p🎜🎜 🎜3. Mettez la fenêtre cmd précédente de côté et ouvrez une autre fenêtre cmd d'administrateur. Entrez
mysql
pour accéder au service mysql🎜🎜🎜🎜4. Entrez utiliser mysql
pour entrez dans la base de données MySQL, puis modifiez la chaîne d'authentification en vide🎜alter user root@localhost identified by '12345' FLUSH privileges; exit🎜🎜🎜5, actualiser les autorisations, quitter🎜rrreee🎜🎜🎜6, Dans la première fenêtre cmd, utilisez
ctrl+c
pour quitter le mode "ignorer la table d'autorisation", démarrez le service mysql 🎜rrreee🎜🎜🎜🎜7, utilisez un mot de passe vide pour vous connecter, puis utilisez l'instruction alter pour mettre à jour le mot de passe, actualisez les autorisations, quittez 🎜rrreeerrreee🎜🎜 🎜🎜8, essayez de vous connecter avec un mot de passe, avec succès. 🎜🎜🎜🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!