Méthode détaillée MySQL Quick Check pour réinitialiser le mot de passe MySQL

Vérification rapide MySQL

Parce que j'oublie souvent certaines instructions, mots-clés, opérations, etc. MySQL dans mon travail et mes études quotidiens, j'ai récemment pris le temps d'écrire le contenu suivant sur MySQL. C'est comme un dictionnaire


Cet article


Opérateurs de type de données
Fonctions couramment utilisées
Intégrité des données
Opérations de base de la base de données Opérations
sur la table elle-même Opérations
sur les données de la table Sous-requêtes Connexions
multi -tables Vues d'index Prétraitement des instructions SQL Fonctions personnalisées et procédures stockées Programmation dans MySQL






réinitialiser le mot de passe mysql


Astuce : principalement pour MySQL8

  1. Si vous avez toujours le mot de passe d'origine, vous pouvez utiliser mysqladmin pour changer le mot de passe (c'est plus simple)
# 命令
mysqladmin -h主机 -u用户名 -p 原密码 password 新密码
# 如果mysql就安装在自己的机器上,可以不写"-h"选项;
# 如果是新安装的mysql(没有设置过密码)"-p"选项后面不用写原密码,
# 回车后会提示"Enter password",不用输入,直接回车

# 将root用户的密码由原来的admin修改为root
>> mysqladmin -uroot -padmin password root
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
# 这个警告是说密码是明文发送到mysql服务器的,建议使用ssl连接,不用理会

Si la méthode ci-dessus ne fonctionne pas ou si vous avez oublié le mot de passe d'origine, vous devez utiliser la méthode suivante.
En fait, mysqladmin combiné avec mysqld_safe peut également résoudre le problème de la réinitialisation du mot de passe après l'avoir oublié. Si vous êtes intéressé, vous pouvez rechercher

  1. Utilisez MySQL pour vous connecter sans aucun paramètre
>mysql
ERROR 1045 (28000): Access denied for user 'cracal'@'localhost' (using password: NO)

Si l'erreur ci-dessus se produit, recherchez le fichier de configuration MySQL et ajoutez " skip-grant-tables " sous [mysqld]

  • Windows peut trouver le service MySQL en cliquant avec le bouton droit sur cet ordinateur- > Gérer- > Services et applications- > Services . Si vous n'avez pas modifié le nom lors de l'installation, il s'appellera généralement Mysqld*.*. Double-cliquez sur le fichier exécutable dans la boîte de dialogue contextuelle. Recherchez le chemin de my.ini dans le chemin , copiez-le et ouvrez-le, des droits d'administrateur sont requis pour modifier le fichier.
  • Ubuntu est généralement /etc/mysql/mysql.conf.d/mysqld.cnf.
  • Centos est généralement /etc/my.cnf.d/mysql-server.cnf.
  • Vous m'avez demandé pourquoi Linux n'est pas /etc/my.cnf ou /etc/mysql/my.cnf, car je ne peux pas démarrer le service mysql après l'avoir modifié. Il peut également être utilisé si vous modifiez l’un de ces deux pour atteindre l’objectif.
    Remarque : Après avoir ajouté skip-grant-tables, vous devez redémarrer le service mysql :
    • Windows peut être redémarré visuellement dans l'interface de service ouverte ci-dessus (ou redémarré avec la commande net)
    • Linux utilise la commande systemctl restart mysql.service pour redémarrer
...
[mysqld]
skip-grant-tables
...
  1. Connectez-vous et sélectionnez mysql
>>mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.23-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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.

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
  1. Effacer le mot de passe
    Pour faciliter la description et le fonctionnement, le mot de passe sera effacé, que le compte root précédent ait ou non un mot de passe défini.
mysql> update user set authentication_string="" where user="root";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

  1. réinitialiser le mot de passe
alter user '账号'@'主机' identified by '密码';
# 例 将localhost主机的root账号设置密码为root
mysql> alter user 'root'@'localhost' identified by 'root';

4.1 Remarque : Si l'erreur suivante est signalée,

mysql> alter user 'root'@'localhost' identified by 'root';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

Les privilèges peuvent être actualisés à l'aide des privilèges de vidage

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

Continuez ensuite à exécuter modifier...

4.2 Si l'erreur suivante est signalée

mysql> alter user 'root'@'localhost' identified by 'root';
ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded

Exécutez ensuite l'instruction suivante

update  mysql.user set  `plugin`='mysql_native_password'  WHERE `user`='root' AND `host`='localhost';
# where子句可以不加

Utilisez ensuite quit pour quitter MySQL, puis redémarrez le service MySQL, puis utilisez la commande MySQL sans aucun paramètre pour vous connecter ; sélectionnez la base de données MySQL et continuez à exécuter l'instruction alter.
Remarque : Si vous modifiez le mot de passe après le redémarrage, vous risquez toujours d'obtenir l'erreur 4.1, qui peut être modifiée selon la solution 4.1.

# 登陆mysql
>>mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.23-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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.
# 选择mysql数据库
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
# 修改密码
mysql> alter user 'root'@'localhost' identified by 'root';
Query OK, 0 rows affected (0.01 sec)

D'une manière générale, le mot de passe peut être modifié une fois ces opérations terminées. Si vous rencontrez d'autres erreurs, vous pouvez rechercher des solutions basées sur le message d'erreur.

  1. Quittez MySQL, supprimez skip-grant-tables (s'il a été ajouté auparavant), redémarrez le service MySQL et connectez-vous avec le compte root pour tester.
# 重启服务
>> sudo systemctl restart mysql.service 
# 登陆mysql
>> mysql -uroot -p
Enter password: # 键入密码
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.23-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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.

mysql> 

c'est tout!


Si vous utilisezafficher les bases de donnéesL'instruction signale l'erreur suivante :

mysql> show databases;
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

D'après le rapport d'erreur, nous pouvons savoir que l'utilisateur "mysql.infoschema" n'existe pas, nous devons donc créer manuellement l'utilisateur

# 创建用户
# 原型:
create user '用户名'@'主机名' identified by '密码';
# 例子
mysql> create user 'mysql.infoschema'@'%' identified by 'root';
Query OK, 0 rows affected (0.01 sec)

# 授权
# 原型:
grant all privileges on 数据库名.表名 to '用户名'@'主机名';
# 例子
mysql> grant all privileges on *.* to 'mysql.infoschema'@'%';
Query OK, 0 rows affected (0.01 sec)

# 刷新
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

# 测试
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45345384/article/details/116808261
conseillé
Classement