web-dev-qa-db-fra.com

Comment changer mon mot de passe root MySQL pour qu'il soit vide?

Lorsque je travaille localement, je n'ai pas vraiment besoin de saisir mon mot de passe pour accéder à ma base de données. J'ai changé mon mot de passe root lors de la première installation de MySQL, mais je ne sais pas comment changer mon mot de passe. Que devrais-je faire?

47
Andrew

Pour changer le mot de passe root en newpassword:

 mysqladmin -u root -p'oldpassword' password 'newpassword'

Pour le changer afin que root ne nécessite pas de mot de passe:

 mysqladmin -u root -p'oldpassword' password ''

Remarque: je pense qu'il est important qu'il n'y ait pas d'espace entre le -p et 'oldpassword' mais je peux me tromper

48
Andrew

Plutôt que de supprimer le mot de passe (ce qui peut avoir des conséquences désagréables à l'avenir si vous exposez ce serveur aux caractères sauvages), mettez le mot de passe actuel (et votre nom d'utilisateur) dans ~/.my.cnf (ou probablement un emplacement équivalent dans Windows) qui ressemble à ceci:

[client]
user = root
password = s3kr1t

Cela donne à MySQL la capacité impressionnante de se connecter automatiquement en utilisant les informations d'identification fournies, sans vous laisser grand ouvert pour les désagréments à l'avenir.

18
womble
  1. Arrêtez mysqld et redémarrez-le avec l'option - skip-grant-tables .
  2. Connectez-vous en utilisant simplement mysql .
  3. Modifiez le mot de passe root:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';

FLUSH PRIVILEGES;

Pour référence: les documents officiels mysql .

8
geek

Notez que depuis MySQL 5.7, le plugin validate_password est actif par défaut et vous empêche d'utiliser un mot de passe vide.

Vous devez désactiver ce plugin pour autoriser un mot de passe vide:

UNINSTALL PLUGIN validate_password;
SET PASSWORD FOR root@localhost = PASSWORD('');

Faites attention à moins que vous ne vous souciez pas de la sécurité, vous devez suivre @ les conseils de womble et utiliser un mot de passe, ainsi qu'un .my.cnf fichier pour plus de commodité.

Consultez mon article Suppression du mot de passe root MySQL sur ce sujet!

6
Benjamin

Dans les versions plus récentes

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root'

et cela supprimera le mot de passe

UPDATE mysql.user SET authentication_string=PASSWORD('') WHERE User='root'
1
Abadis

J'ai également créé un mot de passe root lors de l'installation et j'ai voulu revenir à l'utilisation de l'authentification Unix une fois que j'ai compris que si j'exécute des commandes ou lance des applications en tant que root, ils peuvent se connecter à la base de données sans mot de passe, ce qui est beaucoup plus simple que d'avoir un autre mot de passe.

Je me suis connecté en tant que root en utilisant le mot de passe, puis j'ai exécuté:

ALTER USER 'root'@'localhost' IDENTIFIED BY '';

Pour tester, ouvrez un nouveau terminal et effectuez Sudo su puis mysql et vérifiez s'il se connecte sans mot de passe (cela ne fonctionnait pas lorsqu'un mot de passe était défini).

J'ai également créé un compte MySQL avec le même nom d'utilisateur que mon compte Unix, encore une fois sans mot de passe, et en utilisant le compte root, je lui ai accordé l'accès aux tables dont j'avais besoin, puis je pouvais également me connecter à partir des applications de mon compte utilisateur sans passer à root .

Cela dépasse la portée de la question, mais je chercherais ensuite à accrocher le processus de création d'utilisateurs Unix pour créer automatiquement un compte utilisateur MySQL correspondant.

Plus d'informations et d'autres façons de le faire dans MySQL Docs Comment réinitialiser le mot de passe racine

0
malhal