web-dev-qa-db-fra.com

Impossible d'ouvrir et de verrouiller les tables de privilèges: la table 'mysql.user' n'existe pas

J'ai installé le serveur de communauté MySQL 5.7.10 en utilisant le binaire Zip. J'ai extrait le zip dans c:\mysql et créé le dossier de données dans c:\mysql\data. J'ai créé le fichier de configuration en tant que my.ini et je l'ai placé dans c:\mysql (dossier racine du fichier Zip extrait). Ci-dessous le contenu du fichier my.ini

# set basedir to your installation path
basedir=C:\mysql
# set datadir to the location of your data directory
datadir=C:\mysql\data

J'essaie de démarrer MySQL avec mysqld --console, mais le processus est interrompu avec l'erreur ci-dessous.

2015-12-29T18:04:01.141930Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2015-12-29T18:04:01.141930Z 0 [ERROR] Aborting 

Toute aide à ce sujet sera appréciée.

35
BValluri

Vous devez initialiser le répertoire de données en exécutant la commande suivante

mysqld --initialize[avec mot de passe root aléatoire]

mysqld --initialize-insecure[avec mot de passe root vierge]

57
anonymous

mysqld --initialize pour initialiser le répertoire de données, puis mysqld &

Si vous avez déjà lancé mysqld & sans mysqld --initialize, vous devrez peut-être supprimer tous les fichiers de votre répertoire de données.

Vous pouvez également modifier /etc/my.cnf pour ajouter un chemin personnalisé à votre répertoire de données, comme suit: 

[mysqld]
...  
datadir=/path/to/directory
3
Kenovo

Sur Maria DB, vous utilisez mysql_install_db. Dans mon cas, j'utilise une variable d'environnement pour le chemin de données, ce qui signifie que non seulement mysqld doit savoir où via la ligne de commande, mais aussi le script d'installation:

mysql_install_db --user=root --datadir=$db_datapath
2
Charlie

J'ai eu le même problème. Pour une raison quelconque, --initialize n'a pas fonctionné. Après environ 5 heures d’essais et d’erreur avec différents paramètres, configurations et commandes, j’ai découvert que le problème était dû au système de fichiers.

Je voulais exécuter une base de données sur un grand disque dur USB. Les disques de plus de 2 TB sont partitionnés en GPT! Voici un rapport de bogue avec une solution:

https://bugs.mysql.com/bug.php?id=28913

En quelques mots: Ajoutez la ligne suivante à votre my.ini:

innodb_flush_method=normal

J'ai eu ce problème avec MySQL 5.7 sur Windows.

0
Gerfried

Comme suggéré ci-dessus, j'avais un problème similaire avec mysql-5.7.18, 
je l'ai fait de cette façon

1. Exécute cette commande à partir de "MYSQL_HOME\bin\mysqld.exe --initialize-insecure"
2. puis a commencé "MYSQL_HOME\bin\mysqld.exe"
3. Connectez le plan de travail à cet hôte local: 3306 avec le nom d'utilisateur 'root'
4. puis exécuté cette requête "SET PASSWORD FOR 'root' @ 'localhost' = 'root';"

le mot de passe a également été mis à jour avec succès.

0
Muthahir Nawaz