Reset mysql root password

Ou comment pouvoir se connecter en root à mysql quand on ne connait pas le mot de passe :

Voici les différentes étapes à suivre :

! Attention toutes les commandes devront être excécuter en tant que root système

  •   Arrêt du service mysql
 # /etc/init.d/mysql stop
Stopping MySQL database server: mysqld.
  •  Lancer mysql sans mot de passe
 # mysqld_safe --skip-grant-tables &
[1] 4388
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[605]: started
  •  Connexion à mysql server à l’aide du client
 # mysql -u root
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1 to server version: 5.0.13-Debian_1-log
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
  •  Mise en place du nouveau mot de passe root
mysql> use mysql;
mysql> UPDATE user SET Password=PASSWORD('LE-MOT-DE-PASSE') WHERE user='root';
mysql> flush privileges;
mysql> quit;
  • Restart de MySQL Server:
 # /etc/init.d/mysql stop
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+ Done mysqld_safe --skip-grant-tables
 # /etc/init.d/mysql start
# mysql -u root -p

Les explications de mysql

Réplication de données avec mysql

Voici le résultat d’un projet tout simple à mettre en place….

Le principe est simple ! Lorsque que notre base de données est modifié, les données sont reproduites sur un deuxième serveur de manière automatique.

Pour cela imaginons tout d’abord qu’une base de données soit en exploitation sur un serveur.

Ce dit « serveur » sera appelé serveur maitre.
Notre base de données sera répliqué sur un second serveur appellé serveur esclave.

Voici les étapes pour mettre en place cette réplication :

  •  Configuration du serveur maître :

Création d’un utilisateur Mysql pour que le serveur esclave puisse accéder à la base de notre serveur maitre.

user@master:$ mysql -u root -p
mysql -> GRANT REPLICATION SLAVE ON *.* TO rep_slave@192.168.1.100
-> IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql -> FLUSH PRIVILEGES;
mysql -> quit;

Ensuite on édite le fichier de configuration de Mysql (my.cnf dans /etc/ normalement…)
avec les paramètres suivants :

server-id = 1 # à décommenter
log_bin = /var/log/mysql/mysql-bin.log # où stocker les logs binaires
binlog-do-db = entrepot # base que l'on souhaite répliquer
binlog-ignore-db =  mysql  #base que l'on ne souhaite pas répliquer

Pour prendre en compte ces modifications, le service doit être redémarré.

root@master:# /etc/init.d/mysql restart

On vérrouille les tables de la base « entrepot » en mode lecture seule pour éviter les modifications éventuelles.

user@master:$ mysql -u root -p
mysql -> USE entrepôt ;
mysql -> FLUSH TABLES WITH READ LOCK ;

Les informations du serveur maître s’affichent telles que :

mysql -> SHOW MASTER STATUS;
File          Position   Binlog_Do_DB   Binlog_Ignore_DB
mysql-bin.000012 98         entrepot       mysql

Les informations File et Position seront nécessaires à la configuration du serveur esclave.
La base entrepot du serveur maître est exportée grâce à la commande suivante :

user@master:$ mysqldump -u root -p entrepot > entrepot.sql
  • Configuration du serveur esclave :

Considérons que Mysql est installé sur le serveur esclave.

Voici les options à prendre en compte pour la configuration de ce service (dans my.cnf du serveur esclave) :
server-id = 2 # numéro différent du master
#log_bin = /var/log/mysql/mysql-bin.log # à commenter__

Création et importation de la base « entrepot » sur le serveur esclave.

user@slave:$ mysql -u root -p
mysql -> CREATE DATABASE entrepot;
mysql -> quit;
user@slave:$ mysql-u root -p entrepot < entrepot.sql

Redémarrage du service Mysql pour prendre en compte les modifications de configuration.

root@slave:# /etc/init.d/mysql restart

Puis dans un shell Mysql :

mysql -> SLAVE STOP;
mysql -> CHANGE MASTER TO MASTER_HOST='192.168.1.50',
 -> MASTER_USER='rep_slave', MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='MySQL-bin.000012', MASTER_LOG_POS=98;
mysql -> SLAVE START;

Les tables du serveur maître doivent être déverrouillées :

mysql -> USE entrepot ;
mysql -> UNLOCK TABLES ;

Le fichier de journalisation permet de savoir si la connexion s’est effectuée.

root@slave:# tail -f /var/log/mysql.log

Des informations de connexion en direction de la base maître doivent apparaître, cependant aucune erreur ne doit être présente.

Voilà c’est fini !

Pour plus d’infos il vous reste la doc mysql !

documentation mysql