Je me suis accidentellement enfermé hors de MySQL en changeant d'hôte

8

En essayant de faire fonctionner MySQL à distance, j'ai réussi à me verrouiller avec le compte root.

Normalement, j'arrêterais le service MySQL et le redémarrerais en utilisant /etc/init.d/mysql --init-file, mais quand j'essaye de le faire, il dit que le script a été converti en un travail parvenu et d'utiliser la commande "service mysql". Malheureusement, pour autant que je sache, la servicecommande ne prend pas en charge l' --init-fileoption.

Existe-t-il un autre moyen de réinitialiser l'hôte pour l'utilisateur root?

nickjyc
la source

Réponses:

9

Arrêtez MySQL:

service mysqld stop

puis lancez MySQL comme ceci

mysqld_safe --skip-grant-tables --skip-networking

À ce stade, vous devriez pouvoir vous connecter à mysql (à partir de la machine locale) en tant que root.

Chad Feller
la source
1
Vous pourriez aussi service mysqld restart --skip-grant-tables --skip-networking. Puis, après la fixation racine, service mysql restart. Néanmoins, +1 !!!
RolandoMySQLDBA
1

En fin de compte, cette option sera transmise mysqld_safe; la documentation décrit cela en détail. Vous pourrez peut-être découvrir comment upstart appelle MySQL, puis le démarrer manuellement de la même manière avec votre --init-fileoption ajoutée . Assurez-vous cependant de le démarrer en tant que bon utilisateur!

Si vous utilisez Debian ou Ubuntu, vous constaterez probablement qu'il existe un debian-sys-maintutilisateur équivalent à root que vous pourrez peut-être utiliser temporairement; vous trouverez le mot de passe généré automatiquement pour cela dans /etc/mysql/debian.cnf. Il peut également y avoir des alternatives sur d'autres systèmes? Cette option serait probablement plus simple,

dom
la source