Définir le mot de passe MySQL

© Christian PAULUS. Document créé le 5 février 2012 , mis à jour le 5 février 2012.

La démocratie est le pire des régimes, à l'exception de tous les autres. Michel Audiard

Accueil du site > Astuces > MacOSX > Définir le mot de passe MySQL

Configurer / MacOsX

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 stop

Le 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 1

Si 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.pid

Ligne 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 91115

sudo 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 mysqld

Attention : 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/mysql5

Les 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 mysql

qui 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: 0

Il 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

QUIT

pour quitter la consile. Cette console répondra poliment :

Bye

et vous êtes de retour au shell.

Plussoyez !

Les forums sont fermés.