218 votes

MySQL : Comment réinitialiser ou modifier le mot de passe racine de MySQL ?

Comment changer le mot de passe et le nom d'utilisateur de la racine de MySQL dans un serveur ubuntu ? Dois-je arrêter le service mysql avant de procéder à des modifications ?

J'ai aussi une installation de phpmyadmin, est-ce que phpmyadmin sera mis à jour automatiquement ?

2voto

Nayeem Azad Points 151

1. ouvrez nano / vim pour créer un fichier avec le contenu suivant et enregistrez le fichier en tant que ~/mysql-pwd

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';
  1. Arrêtez mysql sudo systemctl stop mysql
  2. Exécuter sudo mysqld -init-file=~/mysql-pwd
  3. Redémarrer mysql sudo systemctl start mysql
  4. Connectez-vous maintenant mysql -u root -p . le mot de passe sera votre NEWPASSWORD

2voto

tanius Points 349

Lorsque vous utilisez la fonction PASSWORD() sur le système où vous voulez changer le mot de passe, cela peut faire apparaître le mot de passe en clair dans un journal MySQL [ source ]. Les garder, ainsi que leurs sauvegardes, etc., aussi sûrs que le mot de passe me semble être un cauchemar, aussi je préfère procéder comme suit :

  1. Sur votre local exécutez ceci avec votre mot de passe :

     mysql -u someuser -p < <(echo "SELECT PASSWORD('mypass');")

    Notez l'espace devant pour éviter qu'il n'apparaisse dans l'historique de bash (pour d'autres distros qu'Ubuntu, cela peut fonctionner différemment). source ).

  2. Sur la machine de votre serveur, exécutez la commande suivante pour changer son mot de passe MySQL Root (remplacer myhash avec le hachage de votre mot de passe tel qu'imprimé par la première commande) :

    mysql -u root -p < <(echo "SET PASSWORD FOR root@localhost = 'myhash';")
  3. En option, soyons un peu paranoïaques : Sur votre machine locale, effacez l'écran de votre terminal avec clear et purgez votre terminal virtuel scrollback, pour cacher le mot de passe en clair apparaissant dans la commande ci-dessus.

2voto

Pour mettre à jour le mot de passe de l'utilisateur Mysql "Root", vous devez avoir à l'esprit que vous aurez besoin des droits de super utilisateur pour cela. Si vous avez les privilèges de super utilisateur, essayez les commandes suivantes :

MySQL 5.7.6 et plus

sudo su
service mysql stop
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
\q;
exit
mysql -u root -p MyNewPass

MySQL 5.7.5 et antérieur

sudo su
service mysql stop
mysql -u root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
\q;
exit
mysql -u root -p MyNewPass

2voto

Shadow Points 24929

Comme la documentation mysql sur le fonction password() dit :

Cette fonction a été supprimée dans MySQL 8.0.11.

Cela invalide à peu près toutes les réponses existantes pour mysql v8.0.11 et plus récent.

D'après la documentation mysql, le nouveau moyen générique pour réinitialiser le mot de passe Root est le suivant :

Les sections précédentes fournissent des instructions de réinitialisation du mot de passe spécifiquement pour Windows et Unix et les systèmes similaires à Unix. Alternativement, sur n'importe quelle plateforme, vous pouvez réinitialiser le mot de passe en utilisant le client mysql (mais cette approche est moins sûre) :

Arrêtez le serveur MySQL si nécessaire, puis redémarrez-le avec l'option --skip-grant-tables. Cela permet à n'importe qui de se connecter sans mot de passe et avec tous les privilèges, et désactive les instructions de gestion des comptes telles que ALTER USER et SET PASSWORD. Comme cette méthode est non sécurisé, si le serveur est démarré avec l'option --skip-grant-tables il active automatiquement l'option --skip-networking afin d'empêcher les connexions distantes. à distance.

Connectez-vous au serveur MySQL à l'aide du client mysql. mot de passe n'est nécessaire car le serveur a été démarré avec --skip-grant-tables :

shell> mysql

Dans le client mysql, dites au serveur de recharger les tables d'attribution pour que les déclarations de gestion de compte fonctionnent :

mysql> FLUSH PRIVILEGES;

Changez ensuite le mot de passe du compte 'Root'@'localhost'. Remplacez le mot de passe par le mot de passe que vous souhaitez utiliser. Pour changer le mot de passe d'un compte Root avec un nom d'hôte différent différent, modifiez les instructions pour utiliser ce nom d'hôte.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Vous devriez maintenant être en mesure de vous connecter au serveur MySQL en tant que Root en utilisant le nouveau mot de passe. Arrêtez le serveur et redémarrez-le normalement (sans les directives --skip-grant-tables et --skip-networking).

1voto

PyDevSRS Points 1278

Changez le mot de passe de la racine de MySQL. De manière plus simple

Toutes ces commandes doivent être exécutées en tant que Root.

Connectez-vous via l'outil de ligne de commande MySQL en utilisant votre ancien mot de passe :

Étape 1

mysql -uroot -p"your_old_password"

Ensuite, exécutez la commande ci-dessous :

Étape 2

SET PASSWORD FOR root@'localhost' = PASSWORD('your_new_password');

Méthode 2 (Connectez-vous d'abord en utilisant votre ancien mot de passe en utilisant la commande ci-dessus)

Exécutez cette commande, qui définit un mot de passe pour l'utilisateur actuel :

SET PASSWORD = PASSWORD('your_new_password');

La commande ci-dessus est pour l'utilisateur actuel. Si vous voulez changer le mot de passe pour un autre utilisateur, vous pouvez mettre le nom de l'utilisateur à la place de la commande "Racine" .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X