Maison > Article > base de données > Introduction détaillée à l'exemple de code sur la façon de changer le mot de passe root de MySQL sous Linux
mysql est une base de données que nous avons souvent besoin d'utiliser sous linux ou Windows. Je pense que tout programmeur devrait être familier avec MySQL, mais parfois le cerveau est court-circuité. J'ai soudainement oublié le mot de passe du super utilisateur mysql. À ce stade, je dois changer un nouveau mot de passe. L'article suivant explique comment changer le mot de passe root de mysql sous Linux.
Avant-propos
Cela aurait dû faire plusieurs mois que le service a été déployé sur MySQL, car l'essentiel du travail se fait désormais dans le terminal, donc il y a très peu de connexion, je veux modifier quelque chose aujourd'hui, et du coup j'ai découvert que j'avais complètement oublié le mot de passe de mysql, j'ai parcouru le code et j'ai finalement trouvé le mot de passe de la base de données d'entreprise, mais le mot de passe root était toujours. introuvable et les autorisations n'ont pas pu être modifiées, alors j'ai commencé à parcourir les fosses. J'estime que je les rencontrerai à nouveau dans le futur, je vais donc les compiler et les enregistrer. Les amis qui en ont besoin peuvent venir y jeter un œil.
Paramètres système
Serveur
$ cat /proc/version Linux version 4.8.3-x86_64-linode76 (maker@build) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Thu Oct 20 19:05:39 EDT 2016 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial
mysql
mysql> show variables like "%version%"; +-------------------------+-------------------------+ | Variable_name | Value | +-------------------------+-------------------------+ | innodb_version | 5.7.16 | | protocol_version | 10 | | slave_type_conversions | | | tls_version | TLSv1,TLSv1.1 | | version | 5.7.16-0ubuntu0.16.04.1 | | version_comment | (Ubuntu) | | version_compile_machine | x86_64 | | version_compile_os | Linux | +-------------------------+-------------------------+
Solution
Démarrez MySQL en mode sans échec, vous pouvez vous connecter directement en tant que root, puis réinitialiser mot de passe. Voici les étapes spécifiques
Arrêtez le service MySQL en cours d'exécution :
sudo service mysql stop
Démarrez MySQL en mode sans échec :
sudo mysqld_safe --skip-grant-tables --skip-networking &
Connectez-vous directement avec root, sans mot de passe requis :
mysql -u root
Réinitialiser le mot de passe :
mysql> use mysql; mysql> update user set authentication_string=password('password') where user='root'; mysql> flush privileges;
Quitter mysql
mysql > quit
Redémarrer mysql
sudo service mysql restart
Connexion par mot de passe :
mysql -u root -p
Une erreur est signalée lors du changement de mot de passe , invitant ERREUR 1054 (42S22 )
Lors de la modification du mot de passe, de nombreux documents sur Internet vous invitent à saisir la commande à modifier :
mysql> update user set password=PASSWORD("password") where User='root';
Le résultat est une erreur lorsque en utilisant cette commande :
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
La raison est qu'à partir de mysql 5.7, le champ mot de passe a été remplacé par ignition_string Vous pouvez utiliser la commande suivante pour le modifier.
Après avoir modifié le mot de passe, la connexion à MySQL échoue et affiche l'ERREUR 2update user set authentication_string=password('password') where user='root';002
(HY000)Après avoir modifié le mot de passe et redémarré, je ne peux pas me connecter à MySQL. Il demande
après avoir recherchéERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)Le retour est dû au fait que j'ai
installé plusieurs versions de MySQL, et le problème peut être résolu en exécutant les commandes suivantes dans l'ordre . Afficher le mysql en cours d'exécution
tuer le mysql en cours d'exécution
ps -A|grep mysql
Afficher le mysqld en cours d'exécution
sudo pkill mysql
tuer le mysqld en cours d'exécution
ps -A|grep mysqld
tuer le mysqld en cours d'exécution
sudo pkill mysqld
Redémarrer MySQL
service mysql restart
Connectez-vous à MySQL
mysql -u root -p
Résumé
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!