web-dev-qa-db-fra.com

Comment faire pour récupérer le mot de passe mysql?

Ce que j'avais déjà joué sont:

Sudo /etc/init.d/mysql stop
/usr/sbin/mysqld --skip-grant-tables --skip-networking & 

Après cela, je reçois:

[Warning] Using unique option prefix key_buffer instead of
key_buffer_size is deprecated and will be removed in a future release.  
Please use the full name instead.

150929 11:48:31[Note] /usr/sbin/mysqld (mysqld ....)starting as
process 3633 ...

Et ce n'est pas traité plus loin.

Que faire?

2

Les prochaines étapes pourraient être:

  1. En terminal:

    mysql
    
  2. Dans MySQL Shell:

    use mysql;
    select user,password,Host from user;
    update user set password=password("newpassword") where user=root;
    select user,password,Host from user;
    flush tables;
    FLUSH PRIVILEGES;
    quit
    
  3. En terminal:

    kill -15 `pgrep -f 'skip-grant-tables' 
    service mysql start
    mysql -u root -p
    
1
Ova
  1. Connectez-vous à votre système en tant qu'utilisateur Unix sous lequel le serveur MySQL est exécuté (par exemple, mysql).

  2. Arrêtez le serveur MySQL s'il est en cours d'exécution. Vous l'avez fait avec:

    su /etc/init.d/mysql stop
    
  3. Créez un fichier texte contenant l'instruction suivante sur une seule ligne. Remplacez le mot de passe par le mot de passe que vous souhaitez utiliser.

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    

Enregistrez le fichier. Cet exemple nomme le fichier /home/me/mysql-init. Le fichier contient le mot de passe, ne le sauvegardez donc pas où il pourra être lu par d'autres utilisateurs. Si vous n'êtes pas connecté en tant que mysql (l'utilisateur sous lequel le serveur est exécuté), assurez-vous que le fichier dispose des autorisations permettant à mysql de le lire.

  1. Démarrez le serveur MySQL avec l'option spéciale --init-file:

    Shell> /usr/sbin/mysqld --init-file=/home/me/mysql-init &
    

Le serveur exécute le contenu du fichier nommé par l'option --init-file au démarrage, en modifiant le mot de passe du compte 'root'@'localhost'.

  1. Une fois le serveur démarré, supprimez /home/me/mysql-init.

  2. Tuez mysqld et lancez-le avec:

    su /etc/init.d/mysql start
    
1
nobody

Ce que vous avez fait est correct, comme expliqué dans le manuel (reportez-vous à la section Manuel de MySQL 5.5 au paragraphe B.5.4.1.3). Au moment où vous vous êtes arrêté, votre serveur MySQL est démarré sans contrôle des autorisations. Tout ce que vous avez à faire est de suivre les étapes suivantes dans le lien ci-dessus (résumé ci-dessous):

  1. Connectez-vous à votre serveur MySQL via le terminal:

    Shell> mysql
    
  2. Rechargez les tables de droits pour que les instructions de gestion de compte fonctionnent:

    mysql> FLUSH PRIVILEGES;
    
  3. Changez le mot de passe (n'oubliez pas le ; à la fin):

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    
  4. Quittez le client MySQL et redémarrez le serveur mysql normalement:

    mysql> exit;
    Shell> Sudo service mysql restart
    

Soit dit en passant, il est préférable d'utiliser le service start/stop/restart/status pour gérer les divers services comme mysqld plutôt que d'utiliser la version /etc/init.d/ comme vous l'avez fait.

1
Marc Vanhoomissen