web-dev-qa-db-fra.com

Comment définir le mot de passe root sur null

Comment puis-je changer le mot de passe pour root utilisateur de MySQL en null - ce qui signifie qu'aucun mot de passe ou '' - à partir du client en ligne de commande MySQL?

54
Stormshadow

Vous pouvez récupérer le mot de passe du serveur de base de données MySQL en cinq étapes simples.

Étape n ° 1: arrêtez le processus du serveur MySQL.

Étape n ° 2: démarrez le processus serveur/démon MySQL (mysqld) avec l'option --skip-grant-tables afin qu'il ne demande pas de mot de passe.

Étape 3: connectez-vous au serveur mysql en tant qu'utilisateur root.

Étape # 4: Configurez le nouveau mot de passe du compte racine mysql, c'est-à-dire réinitialisez le mot de passe mysql.

Étape n ° 5: quittez et redémarrez le serveur MySQL.

Voici les commandes que vous devez taper pour chaque étape (vous connecter en tant qu'utilisateur root):

Étape n ° 1: Arrêtez le service mysql

# /etc/init.d/mysql stop

Sortie:

Stopping MySQL database server: mysqld.

Étape # 2: Démarrer le serveur MySQL sans mot de passe:

# mysqld_safe --skip-grant-tables &

Sortie:

[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started

Étape # 3: Connectez-vous au serveur mysql en utilisant le client mysql:

# mysql -u root

Sortie:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Étape # 4: Configurez le nouveau mot de passe de l'utilisateur root MySQL

mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

Étape # 5: Arrêtez le serveur MySQL:

# /etc/init.d/mysql stop

Sortie:

Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+  Done                    mysqld_safe --skip-grant-tables

Étape # 6: démarrez le serveur MySQL et testez-le

# /etc/init.d/mysql start
# mysql      
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 
# mysql -u root -p

Source: http://www.cyberciti.biz/tips/recover-mysql-root-password.html

13
Vladislav Rastrusny

Travaillé pour moi et "5.7.11 MySQL Community Server":

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

Je devais aussi changer le champ 'plugin' car il était réglé sur 'auth_socket'.

Après cela, je pouvais me connecter en tant que mysql -u root sans mot de passe.

66

Si vous voulez un mot de passe vide, vous devez définir le mot de passe sur null et ne pas utiliser la fonction de hachage du mot de passe, en tant que telle:

Sur la ligne de commande:

Sudo service mysql stop
Sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -uroot

En MySQL:

use mysql;
update user set password=null where User='root';
flush privileges;
quit;
52
user64141
  • connectez-vous à mysql en tant qu'utilisateur root (utilisez l'une des deux méthodes suivantes)
    • connectez-vous en tant que root et lancez mysql en utilisant mysql -p, entrez le mot de passe root actuel
    • connectez-vous en tant qu'individu et démarrez mysql en utilisant mysql -u root -p, entrez le mot de passe root actuel
  • mysql> set password = password('');

Terminé! Pas de mot de passe root.

51
bsd
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');
19
kta

Cela a fonctionné pour moi sur Ubuntu 16.04 avec v5.7.15 MySQL:

Tout d’abord, assurez-vous que mysql-client est installé (Sudo apt-get install mysql-client).

Ouvrir le terminal et se connecter:

mysql -uroot -p

(puis tapez votre mot de passe)

Après ça:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

(tnx @Stanislav Karakhanov)

Et la dernière chose importante à faire est de réinitialiser le service mysql :

Sudo service mysql restart

Vous devriez maintenant pouvoir vous connecter (sans mot de passe) également en utilisant MySQL Workbench.

13
djordjea

Ce n'est pas une bonne idée de modifier directement la base de données mysql.

Je préfère les étapes suivantes:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ''; 
mysql> flush privileges;
4
Zendo June

Pour MySQL 8.0, il suffit de:

SET PASSWORD FOR 'root'@'localhost' = '';

4
Nicolas Rivas

Ça marche pour moi.

ALTER USER 'root' @ 'localhost' IDENTIFIÉ AVEC mysql_native_password BY 'password'

1
user9903233

La réponse par utilisateur64141

use mysql;
update user set password=null where User='root';
flush privileges;
quit;

cela n’a pas fonctionné pour moi dans MariaDB 10.1.5 (supposé remplacer MySQL). Bien que MySQL 5.6 ne l'ait pas testé pour savoir s'il s'agissait d'un changement en amont, l'erreur que j'ai eu était

ERREUR 1048 (23000): la colonne 'Mot de passe' ne peut pas être null

Mais remplacer le null par des guillemets simples ou doubles vides a bien fonctionné.

update user set password='' where User='root';

ou

update user set password="" where User='root';
1
user3430227

Ma variante pour MySQL 5.7:

Arrêtez le service mysql:

$ Sudo service mysql stop

Fonctionnement en mode sans échec:

$ Sudo mysqld_safe --skip-grant-tables --skip-networking

(la ligne ci-dessus est la commande entière)

Ouvrez une nouvelle fenêtre de terminal:

$ mysql -u root

$ mysql use mysql;

$ mysql update user set authentication_string=password('password') where user='root';

$ mysql update user set plugin="mysql_native_password" where User='root';

$ mysql flush privileges;
$ mysql quit;

Exécutez le service mysql:

$ Sudo service mysql start
0
Elena

tout cela parce que vous avez installé une version plus grande que 5.6 du mysql

Solutions

1.vous pouvez dégrader la solution de version mysql

2 reconfigurez l'authentification en authentification de type natif ou hérité à l'aide de
option de configuration

0
Vinayak Shedgeri

J'utilise nodejs et Windows 10. Une combinaison de deux réponses a fonctionné pour moi.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ''; 
mysql> flush privileges;

suivi par:

restart;

J'espère que cela aidera les autres qui ont toujours un problème avec cela.

0
Kaushik

Pour vous connecter à mysql sans mot de passe:

mysql -p SET PASSWORD = ""

https://dev.mysql.com/doc/refman/5.7/en/set-password.html

0
Tom DE RUDDER

Si vous connaissez votre mot de passe racine et souhaitez simplement le réinitialiser, procédez comme suit:

  • Démarrez le service MySQL à partir du panneau de configuration> Outils d’administration> Services. (seulement si vous l'avez arrêté plus tôt! Sinon, ignorez cette étape)

  • Démarrer MySQL Workbench

  • Tapez cette commande/ligne SQL

    ALTER USER 'root' @ 'localhost' PASSWORD EXPIRE;

Pour réinitialiser tout autre mot de passe utilisateur ... tapez simplement un autre nom d'utilisateur au lieu de root. 

0
Hamid Faisal

La syntaxe est légèrement différente selon les versions. À partir de la documentation ici: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

MySQL 5.7.6 et versions ultérieures:

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

MySQL 5.7.5 et versions antérieures:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');
0
nofunatall

C'est à partir de MySQL 8.0.13:

use mysql;

update user set authentication_string=null  where user='root';

quit;
0
saltfish

J'ai remarqué que certaines de ces solutions ci-dessus sont maintenant obsolètes.

Pour définir un mot de passe vide, procédez comme suit:

mysql -u root -p

use mysql

SET PASSWORD FOR 'root'@'localhost' = '';

\q (to quit)

now run: mysql -u root

Vous devriez pouvoir démarrer mysql sans mot de passe maintenant.

0
Jackie Santana

Voulais mettre mes propres 2cents ici parce que les réponses ci-dessus ne fonctionnaient pas pour moi .

Les commandes correctes seraient les suivantes:

# start mysql without password checking
systemctl stop mysqld 2>/dev/null
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" &&
systemctl start mysqld

# set default password to nothing
mysql -u root mysql <<- 'EOF'
    FLUSH PRIVILEGES;
    UNINSTALL COMPONENT 'file://component_validate_password';
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
    FLUSH PRIVILEGES;
    INSTALL COMPONENT 'file://component_validate_password';
EOF

# restart mysql normally
systemctl restart mysqld

alors vous pouvez vous connecter sans mot de passe:

mysql -u root
0
Tyler Moore