J'ai installé MySQL et lors de l'installation, on m'a demandé un mot de passe que j'ai entré, mais maintenant mon professeur dit que nous devrions pouvoir nous connecter en tant que root sans mot de passe.
Cela fonctionne mais je n'ai aucun privilège :
Cela ne fonctionne pas :
Cela non plus
Réponse acceptée :
Cause du problème
La configuration par défaut pour se connecter en tant que root
user dans MySQL 5.7 nécessite l'utilisation d'un socket d'authentification. Cela peut être vérifié en interrogeant l'user
tableau :
mysql> select user,authentication_string,plugin from user where user='root';
+------+-----------------------+-------------+
| user | authentication_string | plugin |
+------+-----------------------+-------------+
| root | | auth_socket |
+------+-----------------------+-------------+
1 row in set (0.00 sec)
À partir de la documentation :
Le plug-in socket vérifie si le nom d'utilisateur du socket (le nom d'utilisateur du système d'exploitation) correspond au nom d'utilisateur MySQL spécifié par le programme client
au serveur. Si les noms ne correspondent pas, le plugin vérifie
si le nom d'utilisateur du socket correspond au nom spécifié dans la colonne authentication_string de la ligne de la table système mysql.user. Si une
correspondance est trouvée, le plugin autorise la connexion.
En d'autres termes, mysql par défaut n'a pas de mot de passe root défini - vous devez exécuter phpMyAdmin en tant que root ou via sudo
(les deux sont une mauvaise idée pour des raisons de sécurité), ou vous modifiez la méthode d'authentification et réinitialisez le mot de passe root comme indiqué dans le didacticiel Digital Ocean.
Notez qu'à part le même nom, les utilisateurs de MySQL et les utilisateurs du système ne sont pas les mêmes. Vous pouvez avoir un utilisateur MySQL jdoe
et n'ont pas un tel utilisateur sur le système hôte. Ainsi, root
est l'utilisateur root de MySQL, pas l'utilisateur système.
Étapes pour changer le plugin et le mot de passe :
-
ouvrez le terminal et exécutez
sudo mysql -u root
. Vous devriez voir un message d'accueil etmysql>
rapide. Il s'agit du shell MySQL, qui est différent de votre shell de ligne de commande, donc seules les instructions SQL sont acceptées ici. -
Saisissez la séquence de requêtes SQL suivante :
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> UPDATE user SET plugin='mysql_native_password',authentication_string=PASSWORD('newpassword') WHERE user = 'root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1
-
Quittez et essayez de vous connecter :
mysql> exit Bye $ sudo systemctl restart mysql $ sudo mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.21-1 (Debian) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Si tout se passe bien, vous devriez pouvoir vous connecter depuis phpMyAdmin via le nouveau mot de passe. Si quelque chose ne va pas, essayez de redémarrer le serveur sans vérification des autorisations (c'est l'étape numéro 3 du didacticiel Digital Ocean). Pour d'autres problèmes, n'hésitez pas à poser une autre question ici ou sur Administrateurs de base de données - Stack Exchange
En relation :Créer des fichiers LOG lors de la création de plusieurs fichiers DATA pour tempdb ?