web-dev-qa-db-fra.com

Comment démarrer MySQL avec --skip-grant-tables?

J'ai verrouillé mon utilisateur root à partir de notre base de données. Je dois obtenir tous les privilèges à l'utilisateur root. J'ai mon mot de passe et je peux me connecter à MySQL. Mais l'utilisateur root n'a pas tous les privilèges.

39
Steven

J'ai eu le même problème que le titre de cette question, alors incase quiconque googles sur cette question et veut démarrer MySql en mode 'sauts de subventions' sous Windows, voici ce que j'ai fait.

Arrêtez le service MySQL avec les outils de l’administrateur, Services.

Modifier le fichier de configuration my.ini (en supposant les chemins par défaut)

C:\Program Files\MySQL\MySQL Server 5.5\my.ini

ou pour la version MySQL> = 5.6

C:\ProgramData\MySQL\MySQL Server 5.6\my.ini 

Dans la section SERVER, sous [mysqld], ajoutez la ligne suivante:

skip-grant-tables

de sorte que vous avez

# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
#
[mysqld]

skip-grant-tables

Redémarrez le service et vous devriez pouvoir vous connecter à votre base de données sans mot de passe.

37
tonycoupland

Comment reprendre le contrôle de l'utilisateur root dans MySQL.

DANGER: OPÉRATION À RISQUE

  • Démarrer la session ssh (en utilisant root si possible).
  • Editez le fichier my.cnf avec.

    Sudo vi /etc/my.cnf
    
  • Ajouter une ligne au bloc mysqld. *

    skip-grant-tables
    
  • Sauvegarder et quitter.

  • Redémarrez le service MySQL.

    service mysql restart
    
  • Vérifier l'état du service.

    service mysql status
    
  • Connectez-vous à mysql.

    mysql
    
  • Utilisation de la base de données principale.

    use mysql;
    
  • Redéfinissez le mot de passe root de l'utilisateur.

    UPDATE user SET `authentication_string` = PASSWORD('myNuevoPassword') WHERE `User` = 'root'; 
    
  • Editez le fichier my.cnf.

    Sudo vi /etc/my.cnf
    
  • Effacer la ligne.

    skip-grant-tables
    
  • Sauvegarder et quitter.

  • Redémarrez le service MySQL.

    service mysqld restart
    
  • Vérifier l'état du service.

    service mysql status
    
  • Connectez-vous à la base de données.

    mysql -u root -p
    
  • Tapez le nouveau mot de passe lorsque vous y êtes invité.

Cette action est très dangereuse, elle permet à quiconque de se connecter à toutes les bases de données sans aucune restriction, sans utilisateur ni mot de passe. Il doit être utilisé avec précaution et doit être retourné rapidement pour éviter les risques.

22
gizmo_marco

Sur le système Linux, vous pouvez faire ce qui suit (devrait être similaire pour d’autres systèmes d’exploitation)

Vérifiez si le processus mysql est en cours d'exécution:

Sudo service mysql status

Si vous exécutez, arrêtez le processus: (Assurez-vous de fermer tous les outils mysql)

Sudo service mysql stop

Si vous avez un problème d’arrêt, suivez les instructions suivantes:

Recherche du processus: ps aux | grep mysqld Tuez le processus: kill -9 process_id

Maintenant, démarrez mysql en mode sans échec avec skip grant

Sudo mysqld_safe --skip-grant-tables &
4
Arpit

Si vous utilisez le serveur mysql 5.6 et que vous rencontrez des problèmes avec C:\Program Files\MySQL\MySQL Server 5.6\my.ini:

Vous devriez aller à C:\ProgramData\MySQL\MySQL Server 5.6\my.ini.

Vous devriez ajouter skip-grant-tables et vous n'avez pas besoin d'un mot de passe.

# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
#
# server_type=3
[mysqld]
skip-grant-tables

Remarque: une fois que vous avez terminé votre travail sur skip-grant-tables, vous devez restaurer votre fichier au format C:\ProgramData\MySQL\MySQL Server 5.6\my.ini.

2
heesang

Après avoir essayé beaucoup de choses, voici ce qui a fonctionné pour moi:

Sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; 

Nous utilisons donc d'abord Sudo pour connecter mysql en tant que root sans avoir besoin d'un mot de passe. Ensuite, nous mettons à jour le mot de passe de root.

Après cela, j'ai redémarré mysqld:

Sudo service mysql restart

Et la newpassword racine connectée!

2
Carles Alcolea

Utilisez la commande suivante (notez le "d"): mysqld --skip-grant-tables

2
trailing slash

si vous utilisez Apple MacBook OSX, alors: 

  1. Arrêtez votre serveur MySQL (s'il est déjà en cours d'exécution). 
  2. Trouvez votre fichier de configuration MySQL, my.cnf. (Pour moi, il a été placé @ /Applications/XAMPP/xamppfiles/etc. Vous pouvez simplement rechercher si vous ne pouvez pas le trouver).
  3. Ouvrez le fichier my.cnf dans n’importe quel éditeur de texte.
  4. Ajoutez "skip-grant-tables" (sans les guillemets) à la fin de la section [mysqld] et enregistrez le fichier.
  5. Maintenant démarrez votre serveur MySQL. Cela commence par l'option skip-grant-tables.

Fais ce que tu veux maintenant !!

PS: Veuillez supprimer skip-grant-tables du fichier my.cnf une fois que vous avez terminé, peu importe ce que vous souhaitez faire. ELSE Le serveur MySQL fonctionnera toujours sans droits d'accès.

2
Saurabh Hooda

s'il s'agit d'une fenêtre Windows, la chose la plus simple à faire est d'arrêter les serveurs, d'ajouter skip-grant-tables au fichier de configuration mysql et de redémarrer le serveur.

une fois que vous avez résolu vos problèmes d'autorisation, répétez ce qui précède, mais supprimez l'option skip-grant-tables.

si vous ne savez pas où se trouve votre fichier de configuration, connectez-vous à mysql send SHOW VARIABLES LIKE '%config%' et l'une des lignes retournées vous indiquera l'emplacement de votre fichier de configuration.

0
longneck

Je suis dans Windows 10, en utilisant le serveur WAMP64. Recherche de my.cnf et my.ini. my.ini trouvé dans C:\wamp64\bin\mariadb\mariadb10.2.14.

En suivant les instructions des collègues:

  1. Ouvert le menu de démarrage rapide de Wampserver, sélectionné 'Arrêter tous les services'
  2. my.ini ouvert dans un éditeur de texte, recherche de [mysqld]
  3. Ajout de 'skip-grant-tables' à la fin de la section [mysqld] (mais à l'intérieur de celle-ci)
  4. Enregistrez le fichier, laissez l'éditeur ouvert
  5. Dans le menu Wampserver, sélectionnez "Redémarrer les services". Un avertissement concernant l’option skip-grant-tables apparaît.
  6. Dans le menu Wampserver, sélectionnez MySQL pour ouvrir l'invite.
  7. Il a demandé un mot de passe, appuyez simplement sur Entrée
  8. Collez la commande ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
  9. Il doit signaler que l'opération a réussi (aucune table affectée)
  10. Dans le fichier my.ini, effacez la ligne 'skip-grant-tables', enregistrez le fichier.
  11. Dans le menu WampServer, sélectionnez une fois de plus Restart Service

Maintenant, vous pouvez entrer avec le nouveau mot de passe. Merci à toutes les réponses ici.

0
Faltausername

Editez le fichier my.ini, ajoutez les tables skip-grant-tables et redémarrez votre serveur mysql:

[mysqld]
port= 3306
socket = "C:/xampp/mysql/mysql.sock"
basedir = "C:/xampp/mysql" 
tmpdir = "C:/xampp/tmp" 
datadir = "C:/xampp/mysql/data"
pid_file = "mysql.pid"
# enable-named-pipe
key_buffer = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
skip-grant-tables
# Change here for bind listening
# bind-address="127.0.0.1" 
# bind-address = ::1 
0
Azouz Mohamadi