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?
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
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.
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;
mysql -p
, entrez le mot de passe root actuelmysql -u root -p
, entrez le mot de passe root actuelmysql> set password = password('');
Terminé! Pas de mot de passe root.
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');
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.
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;
Pour MySQL 8.0, il suffit de:
SET PASSWORD FOR 'root'@'localhost' = '';
Ça marche pour moi.
ALTER USER 'root' @ 'localhost' IDENTIFIÉ AVEC mysql_native_password BY 'password'
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';
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
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
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.
Pour vous connecter à mysql sans mot de passe:
mysql -p
SET PASSWORD = ""
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.
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('');
C'est à partir de MySQL 8.0.13:
use mysql;
update user set authentication_string=null where user='root';
quit;
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.
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