web-dev-qa-db-fra.com

MySQL: erreur fatale: impossible d'ouvrir et de verrouiller les tables de privilèges: Table 'mysql.host' n'existe pas

Tout à coup mon serveur MySQL 5.5 local a cessé d'exécuter sur mon Windows XP sp3.

J'ai aussi un wamp Apache et Wamp MySQL installé, mais Wamp MySQL ne fonctionne pas. Le journal des erreurs montre:

  • Impossible de démarrer Server: Bind on TCP/Port IP: Aucun fichier ou répertoire de ce type
  • Avez-vous déjà un autre serveur MySQLD en cours d'exécution sur le port: 3306?

J'ai essayé de changer le port de 3306 à 3307, mais le service ne démarrerait toujours pas, donnant une erreur:

Le spectateur d'événements indique:

  • Erreur fatale: impossible d'ouvrir et de verrouiller les tables de privilège: Table 'mysql.host' n'existe pas
  • Impossible d'ouvrir la table mysql.plugin. Veuillez exécuter mysql_upgrade pour le créer.

Apparemment, je ne peux exécuter mysql_upgrade que si le serveur est en cours d'exécution. Comment puis-je créer 'mysql.host' si le service ne peut pas être démarré?

J'ai désinstallé MySQL Server et réinstallé-le, et lors de l'assistant de configuration après l'installation, je reçois une erreur: le service n'a pas pu être démarré. ERREUR: 0.

Comment puis-je procéder d'ici?

9
Steve

Exécutez la commande suivante

mysql_install_db
9
Mike

initialiser MySQL avant de commencer Windows.

mysqld --initialize
5
tvrcgo

La première chose que vous devez faire est de gérer ces commandes:

use mysql
show tables;

S'il vous plaît noter les différences

Mysql 5.0 a 17 tables dans le schéma MySQL

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| Host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

Mysql 5.1 a 23 tables dans le schéma MySQL

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| Host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

MySQL 5.5 a 24 tables dans le schéma MySQL

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| Host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

Veuillez noter que mysql.plugin n'existe pas dans MySQL 5.0. Il est très plausible de supposer que vous avez installé MySQL 5.0 et que vous avez fabriqué des tables vitales pour la disparition de MySQL 5.5.

Voici quelques bonnes nouvelles. Il y a quelque chose que vous pouvez essayer.

Pour cet exemple

  • Servera est l'endroit où vos données MySQL 5.5 vit
  • Serverb est où vous créerez un environnement séparé MySQL 5.5

Voici vos pas

  1. Sur serveur, mkdir/root/myuser
  2. Sur Servera, cp /var/lib/mysql/mysql/user.*/root/myuser /.
  3. Installez MySQL 5.5 sur Serverb
  4. sCP Serverbb:/var/lib/mysql/mysql/* servera:/var/lib/mysql/mysql /.
  5. Sur Servera, CP /root/myUSERS/USER.*/VAR/LIB/MYSQL/MYSQL /.
  6. service mysql start

C'est ça.

Si vous exécutez cela sous Windows, les mêmes principes doivent s'appliquer.

Essaie !!!

Mise à jour 2011-07-29 16:15 EDT

Si vos noms d'utilisateur avaient des privilèges spécifiques à DB, voici vos étapes

  1. Sur serveur, mkdir/root/myuser
  2. Sur Servera, cp /var/lib/mysql/mysql/user.*/root/myuser /.
  3. Sur Servera, cp /var/lib/mysql/mysql/db.*/root/myuser /.
  4. Installez MySQL 5.5 sur Serverb
  5. sCP Serverbb:/var/lib/mysql/mysql/* servera:/var/lib/mysql/mysql /.
  6. Sur Servera, CP/Root/MyUSERS/*/VAR/LIB/MYSQL/MYSQL /.
  7. service mysql start
1
RolandoMySQLDBA

Exécutez MySQL-Test-Run et vous devriez voir la sortie suivante:

./mysql-test-run
Logging: ./mysql-test-run  
2013-09-14 03:39:32 2566 [Warning] Setting lower_case_table_names=2 because file system for /var/folders/fr/sn4l2f393_v_ytcwkb0lx7_40000gp/T/_M2mZFQPjV/ is case insensitive
2013-09-14 03:39:32 2566 [Note] Plugin 'FEDERATED' is disabled.
2013-09-14 03:39:32 2566 [Note] Binlog end
2013-09-14 03:39:32 2566 [Note] Shutting down plugin 'MyISAM'
2013-09-14 03:39:32 2566 [Note] Shutting down plugin 'CSV'
MySQL Version 5.6.13
Checking supported features...
 - SSL connections supported
Using suites: main,sys_vars,binlog,federated,rpl,innodb,innodb_fts,perfschema,funcs_1,opt_trace,parts,auth_sec
Collecting tests...
 - adding combinations for binlog



 - adding combinations for rpl
Removing old var directory...
Creating var directory '/Users/das/mysql/mysql-5.6.13-osx10.7-x86_64/mysql-test/var'...
Installing system database...
Using server port 50409

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------
0
Arunabh Das

Si vous déplacez votre Datadir, vous devez non seulement donner les nouvelles autorisations de Datadir, mais vous devez assurer que tous les annuaires parents ont la permission.

J'ai déplacé mon datadir sur un disque dur, monté à Ubuntu comme suit:

/media/*user*/Data/

et mon datadir était Base de données.

Je devais définir des autorisations à 771 à chacun des médias, tilisateur et répertoires de données:

Sudo chmod 771 *DIR*

Si cela ne fonctionne pas, une autre façon que vous puissiez obtenir MySQL au travail consiste à modifier l'utilisateur dans /etc/mysql/my.cnf sur root; Bien qu'il n'y ait aucun doute quelques problèmes avec une perspective de sécurité.

0
Kohjah Breese

on dirait que tu as déjà exécuté mysql

essayer

ps ax|grep mysql

si vous voyez une sortie, vous devez probablement l'arrêter (ou la boîte de redémarrage).

si vous ne voyez aucune sortie, essayez d'exécuter MySQLD sans démoniser et voir la sortie.

0
arheops

Le service n'a pas pu être démarré. ERREUR: 0.

Ajouter le chemin MySQL aux variables d'environnement.

0
quanta

J'ai ajouté une étiquette Windows pour aider les gens à répondre à la question.

Mon arrière-plan n'est pas des fenêtres mais les principaux s'appliquent.

Y a-t-il un processus MySQL déjà en cours d'exécution? Si oui, vous devrez le tuer avant de la désinstaller. S'il était toujours en cours d'exécution lorsque vous avez essayé de désinstaller/réinstaller, vous aurez des processus et des fichiers suspendus à vous empêcher de désinstaller complètement.

Ouvrez la fenêtre Services, recherchez quelque chose avec MySQL dans le nom et assurez-vous qu'il n'est pas tenter de commencer par un redémarrage. Ensuite, ouvrez l'onglet Processus d'exécution de la fenêtre Programmes en cours d'exécution (utilisez Ctrl-Alt-Del pour ouvrir) et recherchez et tuez les processus en cours d'exécution avec MySQL dans le nom.

Si vous êtes convaincu qu'il n'y a plus d'exécution de processus MySQL, vous pouvez continuer. Vous voudrez peut-être redémarrer pour être certain de ne plus utiliser les processus MySQL suspendus.

A cette époque, vous devriez pouvoir réinstaller et démarrer MySQL.

0
Rik Schneider