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

Introduction détaillée à l'exemple de code sur la façon de changer le mot de passe root de MySQL sous Linux

黄舟
黄舟original
2017-03-16 13:23:441176parcourir

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

Gestion des exceptions

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 2
 update 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn