Maison > Article > base de données > Que dois-je faire si j’oublie de changer le mot de passe MySQL sous Linux ?
Solution : 1. Dans my.cnf, ajoutez "[mysqld]" et "skip-grant-tables" 2 lignes de code pour ignorer la vérification du mot de passe lors de la connexion ; 2. Démarrez le service mysql et connectez-vous ; dans mysql ; 3. Connectez-vous à la base de données mysql et utilisez la commande UPDATE pour modifier le mot de passe de l'utilisateur.
(Tutoriel recommandé : Tutoriel vidéo mysql)
Changer le mot de passe
1. Vérifiez si le service mysql
est démarré, si il est démarré, fermez le mysql
Service
//查看mysql服务状态 [root@mytestlnx02 ~]# ps -ef | grep -i mysql root 22972 1 0 14:18 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql mysql 23166 22972 0 14:18 pts/0 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock root 23237 21825 0 14:22 pts/0 00:00:00 grep -i mysql //关闭服务 [root@mytestlnx02 ~]# service mysql stop [root@mytestlnx02 ~]#
2 Modifiez le fichier de configuration de mysql
my.cnf
my.cnf
L'emplacement de le fichier de configuration est généralement en /etc/my.cnf
, certains La version est en /etc/mysql/my.cnf
Dans le fichier de configuration, ajoutez 2 lignes de code
[mysqld] skip-grant-tables
pour ignorer la vérification du mot de passe lors de la connexion mysql
puis démarrez le mysql
Service et entrez mysql
[root@mytestlnx02 ~]# service mysqld start [root@mytestlnx02 ~]# [root@mytestlnx02 ~]# mysql -u root Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
3. Changez le mot de passe
Connectez-vous à mysql
cette base de données et changer le mot de passe utilisateur
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> update mysql.user set authentication_string=password('root_password') where user='root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit
4. Redémarrez le service mysql
Commencez par commenter ou supprimez les deux lignes de code précédemment ajoutées au fichier de configuration, puis redémarrez le. mysql
service Vous pouvez vous connecter en utilisant le mot de passe que vous venez de définir.
[root@mytestlnx02 ~]# service mysql start [root@mytestlnx02 ~]# [root@mytestlnx02 ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g.
p.s.
fonctionne différemment sur CentOS
.
L'exécution de la commande pour changer le mot de passe continue de signaler une erreur
mysql> update user set authentication_string=password('xxxxxxxx') where User='root'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('root_password') where User='root'' at line 1
Cela ne peut pas être un problème de syntaxe. Je l'ai vérifié plusieurs fois et j'ai finalement trouvé que CentOS
devrait être fait comme ça. :
Vérifiez le mot de passe initial
[root@VM_0_8_centos ~]# grep 'temporary password' /var/log/mysqld.log 2018-09-26T04:25:54.927944Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: DN34N/=?aIfZ
et vous pouvez voir que le mot de passe initial est DN34N/=?aIfZ
Utilisez le mot de passe initial pour connectez-vous
[root@VM_0_8_centos ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.12 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Changer le mot de passe
mysql> ALTER USER 'root' IDENTIFIED BY 'xxxxxxxxx'; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxxxx'; Query OK, 0 rows affected (0.11 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> exit Bye
Le redémarrage du service prendra effet
[root@VM_0_8_centos ~]# service mysqld stop Redirecting to /bin/systemctl stop mysqld.service [root@VM_0_8_centos ~]# service mysqld start Redirecting to /bin/systemctl start mysqld.service
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!