Ouvrir le fichier de configuration (dans l'exemple, C:\MySQL\my.ini) et faire "enregistrer sous" au format ANSI puis paramétrer :
basedir=C:/MySQL/ datadir=C:/MySQL/Data secure-file-priv=C:/MySQL/Uploads
et éventuellement
default-character-set=latin1 character-set-server=latin1 default-storage-engine=MYISAM max_allowed_packet=16M
pour être certain que MySQL ne vas pas ralentir considérablement en cas de problème de DNS, vous pouvez ajouter au chapitre [mysqld] (attention, ces paramètres empêchent d'utiliser un nom de machine dans la colonne host des grants tables)
skip-host-cache skip-name-resolve
Penser à commenter la ligne qui contient simplement "no-beep" qui déclenche un message d'erreur dans mysqldump.
Sous Windows, le fichier de configuration utilisé par MySQL est fixé sur la ligne de commande du service MySQL. Pour la modifier, la commande est du type :
SC CONFIG MySQL57 binPath= "C:\MySQL\bin\mysqld.exe --defaults-file=C:\MySQL\my.ini MySQL57"
Si le chemin vers mysqld.exe ou vers my.ini contient des blancs, il faut l'encadrer par des "guillemets avec échappement" (le caractère '\' suivi du caractère '"'), comme pour ce chemin de configuration de MariaDB (qui place le fichier my.ini dans le répertoire data)
SC CONFIG MariaDB binPath= "\"C:\Program Files\MariaDB 10.4\bin\mysqld.exe\" --defaults-file=D:\MySQL\data\my.ini MariaDB"
Ouvrir la fenêtre des services, afficher les propriétés du service MYSQL56 puis, dans l'onglet "Connexion", sélectionner "Compte système local" au lieu du "Compte réseau".
Lancer l'invite de commandes mysql et taper
SELECT host, user, password FROM mysql.user WHERE user = 'root';
S'il n'existe pas de ligne donnant des droits aux machines distantes, lancer la commande
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'therootpassword';
Le '%' indique qu'il n'y a aucune restriction sur l'adresse IP. Si on souhaite limiter l'accès aux ordinateurs locaux :
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'therootpassword';
Sur les MySQL récents (à partir de la version 8), il est nécessaire de réaliser les opérations en deux étapes :
CREATE USER 'root'@'192.168.1.%' IDENTIFIED BY 'therootpassword' ; GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' ;
Si le problème persiste, vérifier qu'il n'existe pas, dans le fichier de configuration, la ligne
bind-address = 127.0.0.1
Si elle existe, la commenter et relancer le service
Si l'accès au à un serveur MySQL 8 reste impossible aux clients, vérifier le log principal (du type NomDeMachine.log dans le répertoire Data). Vérifier s'il existe un message du type :
54 Connect Client does not support authentication protocol requested by server; consider upgrading MySQL client
Si ce message existe, c'est que le serveur attend des applications qu'elles se connectent en utilisant des mots de passe chiffrés. Pour permettre au serveur d'accepter une connexion classique, exécuter la commande (en adaptant, bien entendu, le mot de passe) :
ALTER USER root IDENTIFIED WITH mysql_native_password BY 'therootpassword' ;
Comme nous l'avons vu, si le service est déjà en place, on peut modifier ses paramètres avec :
SC CONFIG MySQL57 binPath= "C:\MySQL\bin\mysqld.exe --defaults-file=C:\MySQL\my.ini MySQL57"
S'il n'est déjà en place, on peut le créer avec :
SC CREATE MySQL57 binPath= "C:\MySQL\bin\mysqld.exe --defaults-file=C:\MySQL\my.ini MySQL57"
Renommer un service :
sc config "MySQL57" displayname= "MySQL"
Supprimer un service (en pensant à l'arrêter d'abord) :
sc stop [Service name] sc delete [service name]
Tuer un service "planté" : trouver le PID dans le gestionnaire des tâches (ou en ligne de commande avec sc queryex [service name]), puis
taskkill /f /pid [PID]
Si le service MySQL ne démarre pas, le plus simple pour tenter d'obtenir un message pertinent est de l'exécuter "à la main" en ligne de commande en tapant
mysqld --verbose
Après avoir installé le logiciel, il faut lui demander de créer ses bases de données système avec la commande :
Sous Windows :
bin\mysqld --initialize --console
Sous Linux, il faut s'assurer que les informations créées seront propriété de l'utilisateur "mysql" :
bin/mysqld --initialize --user=mysql
Il faut ensuite trouver dans les logs le mot de pass root attribué par l'installeur, puis le modifier :
SET PASSWORD FOR 'root'@'localhost' = password('newPassword') ;
Et surtout, ne pas oublier de lui attribuer des droits en utilisant la commande GRANT.