Pour la base de données, ce sera très fatal si vous oubliez le mot de passe de l'utilisateur root, mais on peut sauter la table des permissions en ajoutant le paramètre --ship-grant-tables
.
La méthode spécifique est la suivante :
J'ai oublié le mot de passe root et je ne peux pas accéder à la base de données :
À ce stade, vous devez pour forcer l'arrêt de la base de données, vérifiez d'abord MySQL Numéro de processus
Tuez le processus MySQL, la commande est la suivante :
Après l'arrêt, vous pouvez vérifier s'il y a encore des processus
[root@tse2 tmp]# kill -9 9840 1 [root@tse2 tmp]# ps -ef |grep mysql
Il est recommandé que lorsque l'opération d'arrêt de la base de données n'affecte pas l'entreprise, il est préférable d'enregistrer le mot de passe et d'utiliser keepass pour enregistrer le logiciel de mot de passe !
Partage gratuit de didacticiels vidéo d'apprentissage : tutoriel vidéo MySQL
Ajoutez ensuite le paramètre de table d'autorisation de saut et redémarrez la base de données. De cette façon, vous pouvez accéder à la base de données même sans saisir de mot de passe.
[root@tse2 bin]# mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables & [1] 4854
Entrez mysql directement sans mot de passe pour entrer
Définissez un nouveau mot de passe pour l'utilisateur root et actualisez le permissions , après MySQL5.7, le champ mot de passe sous la bibliothèque est remplacé par le champ authentification_string.
(product)root@localhost:mysql.sock [(none)]> use mysql; Database changed (product)root@localhost:mysql.sock [mysql]> update user set authentication_string=password('123456') where user='root'; Query OK, 0 rows affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 1 (product)root@localhost:mysql.sock [mysql]> flush privileges; Query OK, 0 rows affected (0.00 sec)
Une fois les réglages terminés, redémarrez la base de données. Notez qu'il n'est pas nécessaire d'ajouter le paramètre --skip-grant-tables lors du redémarrage. Démarrez le service normalement et saisissez le nouveau mot de passe pour accéder normalement à la base de données. Après avoir redémarré ici, je testerai que mysql ne peut pas être saisi sans mot de passe.
[root@tse2 bin]# mysqld_safe --deaults-file=/etc/my.cnf & [2] 6720 [root@tse2 bin]# 2020-01-16T02:55:45.223195Z mysqld_safe Logging to '/mysql/mysql3306/logs/error.log'. 2020-01-16T02:55:45.262302Z mysqld_safe A mysqld process already exists [2]+ Exit 1 mysqld_safe --deaults-file=/etc/my.cnf [root@tse2 bin]# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Entrez le mot de passe ici pour vous connecter et vous pourrez entrer normalement. Il s'agit du mot de passe modifié 123456
[root@tse2 bin]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.23-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, 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. (product)root@localhost:mysql.sock [(none)]> use mysql Database changed (product)root@localhost:mysql.sock [mysql]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ rows in set (0.01 sec)
Tutoriels d'articles associés recommandés : mysql. tuto
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!