Après installation de MySQL via port sur MacOSX, une des premières actions nécessaires est l’attribution d’un mot de passe pour l’administration de ce fantastique outil.
La démarche illustrée ici permet également de re-définir un mot de passe perdu.
Le document (en français) présent sur le site officiel de MySQL présente une démarche pour réinitialiser un mot de passe. Ce billet se veut être un complément.
Les commandes sont à exécuter via le Terminal. Terminal.app se trouve dans le répertoire principal Applications > Utilitaires (qui apparaît sous le vrai nom Applications/Utilities).
Arrêter le serveur MySQL (mysqld)
Pour arrêter le démon MySQL, le plus simple est d’utiliser la commande mysql.server fournie avec le port :
sudo /opt/local/share/mysql5/mysql/mysql.server stopLe système demande le mot de passe administrateur et exécute la commande.
Si c’est une autre version qui est installée, ou que cette commande mysql.server n’est pas disponible, vous pouvez utiliser la commande kill.
La commande kill demande comme paramètre l’ID, le PID en réalité, le numéro du processus en cours.
Pour obtenir ce PID, la commande ps est le plus court chemin :
ps waux |grep sql|head -n 1Si la commande ci-dessus ne donne rien, c’est que le démon n’est pas actif. Le serveur MySQL n’a pas été activé. Passez au paragraphe suivant.
Par contre, si cette commande renvoie un résultat, celui-ci donne probablement quelque chose du genre :
_mysql 91115 0,0 0,4 2510084 17788 s014 S 6:03 0:00.07 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql5 --user=_mysql --log-error=/opt/local/var/db/mysql5/mini.err --pid-file=/opt/local/var/db/mysql5/mini.pidLigne qui précise :
- le nom de l’utilisateur du process (mysql)
- le PID (dans cet exemple : 91115)
- ...
- l’exécutable (/usr/local/mysql/bin/mysqld)
- ...
- le dépôt des bases de données (/usr/local/mysql/data)
- ...
Pour arrêter le process, appeler la commande kill en précisant le PID du démon Mysql. Dans cet exemple :
sudo kill 91115sudo permet de passer d’exécuter une commande en se substituant à l’utilisateur, en tant qu’administrateur (root).
Alternative : vous pouvez plus simplement utiliser la commande killall :
sudo killall mysqldAttention : arrêter un serveur via kill ou killall n’est pas sans risque pour les bases de données ouvertes. Prenez soin d’effectuer cette manipulation hors connexions actives.
Démarrer le serveur MySQL
Toujours sous les droits d’accès root :
sudo /opt/local/bin/mysqld_safe5 --skip-grant-tables &L’option —skip-grant-tables demande à mysql de ne pas vérifier les droits d’accès aux tables.
La commande ci-dessous renvoie :
120205 11:23:24 mysqld_safe Logging to '/opt/local/var/db/mysql5/mini.err'.
120205 11:23:24 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mysql5Les erreurs - et autres messages systèmes - sont enregistrées dans /opt/local/var/db/mysql5/mini.err
Les bases de données sont enregistrés dans le répertoire /opt/local/var/db/mysql5
Définir le mot de passe administrateur
Toujours dans le répertoire /opt/local/bin :
./mysql5 -h 127.0.0.1 -u root mysqlqui répond :
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.61 Source distribution
Copyright (c) 2000, 2011, 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> Nous sommes maintenant dans le console mysql. Pour modifier le mot de passe de l’administrateur MySQL, root, cette console attend une requête SQL du style :
mysql> UPDATE user SET Password=PASSWORD('nouveaumotdepasse')
-> WHERE User='root';qui répond :
Query OK, 3 rows affected (0.02 sec)
Rows matched: 3 Changed: 3 Warnings: 0Il est évident que dans cet exemple, vous devez remplacer nouveaumotdepasse par le mot de passe que vous avez choisi auparavant.
Terminer par la commande :
FLUSH PRIVILEGES;qui recharge les privilèges. Puis
QUITpour quitter la consile. Cette console répondra poliment :
Byeet vous êtes de retour au shell.