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 ?

71voto

Masoud Points 740

Exécutez d'abord cette commande :

sudo mysql

et ensuite vous devez vérifier quelle méthode d'authentification vos comptes utilisateurs MySQL utilisent, donc lancez cette commande

SELECT user,authentication_string,plugin,host FROM mysql.user;

maintenant vous pouvez voir quelque chose comme ça déjà :

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

dans le tableau ci-dessus, vous pouvez voir que tous vos comptes d'utilisateurs mysql ont un statut et si vous avez défini un mot de passe pour le compte Root avant de voir mysql_native_password dans la colonne des plugins à la place auth_socket . Dans l'ensemble, pour changer votre mot de passe Root, vous devriez exécuter :

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Veillez à changer le mot de passe par un mot de passe fort de votre choix. Ensuite, pour recharger votre serveur afin de mettre en place vos nouveaux changements, exécutez cette commande ;

FLUSH PRIVILEGES;

Vérifiez donc à nouveau les méthodes d'authentification employées par votre mysql, par cette commande :

SELECT user,authentication_string,plugin,host FROM mysql.user;

et maintenant la sortie est :

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

comme vous pouvez le voir dans le tableau des subventions, votre compte Root a mysql_native_password . Vous pouvez maintenant quitter le shell MYSQL

exit;

C'est tout. Vous devez juste redémarrer mysql en sudo service mysql restart . Maintenant, vous pouvez vous connecter à mysql comme un compte Root avec votre mot de passe facilement.

47voto

J'ai rencontré des problèmes avec ubuntu 18.04 et mysql 5.7, voici la solution

Essayez de redémarrer le serveur mysql avant d'exécuter les commandes.

sudo service mysql restart

MYSQL-SERVER >= 5.7

sudo mysql -uroot -p
USE mysql;
UPDATE user SET authentication_string=PASSWORD('YOUR_PASSWORD') WHERE User='root';
UPDATE user SET plugin="mysql_native_password";
FLUSH PRIVILEGES;
quit;

MYSQL-SERVER < 5.7

sudo mysql -uroot -p
USE mysql;
UPDATE user SET password=PASSWORD('YOUR_PASSWORD') WHERE User='root';
UPDATE user SET plugin="mysql_native_password";
FLUSH PRIVILEGES;
quit;

36voto

faisalbhagat Points 396

Changez le mot de passe de la racine de MySQL.

Cette méthode expose le mot de passe à l'historique de la ligne de commande, ces commandes doivent être exécutées en tant que Root.

  1. Connectez-vous via l'outil de ligne de commande mysql :

    mysql -uroot -poldpassword
  2. Exécutez cette commande :

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

ou

  1. Exécutez cette commande, qui définit un mot de passe pour l'utilisateur actuel ('Root' dans ce cas) :

    SET PASSWORD = PASSWORD('newpassword') ;

14voto

Rahul Raveendran Points 151
  1. Arrêter MySQL sudo service mysql stop

  2. Créer un répertoire de service MySQL. sudo mkdir /var/run/mysqld

  3. Donnez à l'utilisateur de MySQL la permission d'écrire dans le répertoire de service. sudo chown mysql : /var/run/mysqld

  4. Démarrez MySQL manuellement, sans vérification des autorisations ni mise en réseau. sudo mysqld_safe --skip-grant-tables --skip-networking &

5. se connecter sans mot de passe. mysql -uroot mysql

6. mettre à jour le mot de passe de l'utilisateur Root.

UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='Root' AND Host='%' ; SORTIE ;

  1. Désactiver MySQL. sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown

  2. Démarrez le service MySQL normalement. sudo service mysql start

13voto

ktscript Points 106

Dans mon cas, cette option m'a aidé : https://stackoverflow.com/a/49610152/13760371
Merci, Rahul.

sauf au moment suivant, lorsque j'essaie d'entrer la commande :

UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='root' AND Host='%';

la console a émis un avertissement :

1681 'password' is deprecated and will be removed in a future release

guéri avec cette commande :

UPDATE mysql.user SET authentication_string=CONCAT('*', UPPER(SHA1(UNHEX(SHA1('NEWPASSWORD'))))), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

MySQL version 5.7.X

Ma variante :

1. > sudo service mysql stop
2. > sudo mkdir /var/run/mysqld
3. > sudo chown mysql: /var/run/mysqld
4. > sudo mysqld_safe --skip-grant-tables --skip-networking &
5. > mysql -uroot mysql
6. > UPDATE mysql.user SET authentication_string=CONCAT('*', UPPER(SHA1(UNHEX(SHA1('NEWPASSWORD'))))), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
7. > \q;
8. > sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
9. > sudo service mysql start

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