Je voulais avoir sur mon PC (avec Windows 8.1 x64) le serveur MySQL uniquement, sans Workbench ou quelque chose. J'ai donc téléchargé l' .zip
archive sur dev.mysql.com/downloads . Il s'agit d'un téléchargement pour Win64 sur x86_64 version 5.7.9 (MySQL Community Server (GPL)).
Je l'ai installé en tant que service Windows, mais il n'y avait pas de mysql
base de données seulement information_schema
. J'ai donc exécuté ceci:
mysql_upgrade.exe --upgrade-system-tables
Et des mysql
bases de données ont été créées. Mais en même temps, quelque chose s'est produit avec l'utilisateur root, car je ne pouvais plus y accéder mysql
.
J'ai donc décidé de réinitialiser ce mot de passe apparu soudainement (car je ne l'avais pas avant cela). J'ai fondé la solution suivante dans le manuel officiel, j'ai démarré le serveur comme ceci:
mysqld.exe --skip-grant-tables --console
Puis j'ai ouvert mysql
sans mot de passe:
mysql.exe –u root
Et puis essayé de réinitialiser le mot de passe root:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD(‘passhere');
Mais j'ai eu cette erreur:
ERREUR 1131 (42000): vous utilisez MySQL en tant qu'utilisateur anonyme et les utilisateurs anonymes ne sont pas autorisés à modifier les mots de passe ".
Qu'est-ce que c'est? Comment suis-je anonyme? Toutes les commandes ont été exécutées cmd.exe
sous l'administrateur.
Que dois-je faire pour réinitialiser le mot de passe root dans cette situation?
Mise à jour 1: j'ai essayé de vérifier l'utilisateur actuel:
SELECT USER(), CURRENT_USER();
Ça donne:
+--------+----------------+
| USER() | CURRENT_USER() |
+--------+----------------+
| root@ | @ |
+--------+----------------+
C'est bizarre, parce que j'ai commencé comme ça mysql.exe -u root
.
Ensuite, j'ai vérifié le tableau des utilisateurs:
SELECT user FROM mysql.user;
Ça donne:
+-----------+
| user |
+-----------+
| mysql.sys |
+-----------+
C'est encore plus bizarre. Il n'y a pas non plus de champ de mot de passe:
SELECT user, password FROM mysql.user;
ERREUR 1054 (42S22): colonne «mot de passe» inconnue dans «liste de champs»
Je ne peux donc pas changer son mot de passe.
Et je ne peux pas créer un nouvel utilisateur:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'passhere';
ERREUR 1290 (HY000): le serveur MySQL fonctionne avec l'
--skip-grant-tables
option, il ne peut donc pas exécuter cette instruction
Maintenant je suis perdu.
Mise à jour 2: je suppose que j'ai tout fait de travers depuis le début. Apparemment, j'ai en mysqld.exe --initialize
quelque sorte manqué une commande.
Voilà donc comment j'ai installé MySQL à partir de .zip-archive, grâce à @RolandoMySQLDBA :
- Déballez l'archive, préparez-vous
my.ini
. - Exécutez
mysqld.exe --initialize
, obtenez un mot de passe temporaire à partir du.err
fichier. Installer MySQL en tant que service et l'exécuter
mysqld --install MySQL --defaults-file="d:/path/to/mysql/my.ini"
Connectez-vous
mysql -u root -p
avec un mot de passe temporaire.Modifiez le mot de passe temporaire:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';