web-dev-qa-db-fra.com

mysqld: Impossible de changer le répertoire en data. Le serveur ne démarre pas

J'ai installé un serveur MySQL avec un programme d'installation et tout a commencé. Après le redémarrage, j’ai essayé de le redémarrer et d’obtenir l’erreur suivante:

D:\Program Files\MySQL\MySQL Server 5.7\bin>mysqld -u root -p
mysqld: Can't change dir to 'D:\Program Files\MySQL\MySQL Server 5.7\data\'     (Errcode: 2 - No such file or directory)
2015-11-17T08:30:18.822962Z 0 [Warning] TIMESTAMP with implicit DEFAULT     value is deprecated. Please use --explicit_defaults_for_timestamp server option     (see documentation for more details).
2015-11-17T08:30:18.822962Z 0 [Warning] Insecure configuration for --secure-    file    -priv: Current value does not restrict location of generated files.     Consider setting it to a valid, non-empty path.
2015-11-17T08:30:18.822962Z 0 [Note] mysqld (mysqld 5.7.9) starting as     process 1108 ...
2015-11-17T08:30:18.838586Z 0 [Warning] Can't create test file D:\Program     Files\MySQL\MySQL Server 5.7\data\DESKTOP-RNBR3E8.lower-test
2015-11-17T08:30:18.838586Z 0 [Warning] Can't create test file D:\Program     Files\MySQL\MySQL Server 5.7\data\DESKTOP-RNBR3E8.lower-test
2015-11-17T08:30:18.838586Z 0 [ERROR] failed to set datadir to D:\Program     Files\MySQL\MySQL Server 5.7\data\
2015-11-17T08:30:18.838586Z 0 [ERROR] Aborting


2015-11-17T08:30:18.838586Z 0 [Note] Binlog end
2015-11-17T08:30:18.838586Z 0 [Note] mysqld: Shutdown complete

J'ai essayé de réinstaller MySQL.
METTRE À JOUR:
Lorsque je lance mysqld -u root -p en tant qu'administrateur, rien ne se passe.

52
Feeco

Depuis que vous avez utilisé le programme d’installation Windows, tout est configuré pour vous permettre d’exécuter MySQL 5.7 en tant que service Windows, ce qui est une excellente option dans la plupart des cas.

Au lieu d'exécuter mysqld.exe à partir de la ligne de commande,

  1. Win + R
  2. Exécuter services.msc
  3. Faites un clic droit sur MySQL57
  4. Démarrer le service.
51
AaronDanielson

J'ai rencontré le même problème. Dans mon cas, je n'avais pas de répertoire ..\data dans mon C:\mysql\, alors je viens d'exécuter la commande mysqld --initialize à partir du répertoire c:\mysql\bin\ et le répertoire de données est dans c:\mysql\data. Ensuite, je pourrais utiliser la commande mysqld.exe --console pour tester le démarrage du serveur. 

46
keerthiprasath

Dans mon cas, j'avais installé le répertoire de données à un emplacement différent. Donc, le répertoire de données n'était pas vraiment à l'emplacement par défaut. Par conséquent, lorsque j'ai exécuté la commande mysqld à partir de l'invite de commande, je devais spécifier le répertoire de données manuellement:

mysqld --datadir=D:/MySQLData/Data

Voici la documentation pour les arguments de ligne de commande mysqld.

17
Hanshan

Ce que j'ai fait (Windows 10) pour une nouvelle installation:

  1. Lancez cmd en mode administrateur (exécutez-le en tant qu'administrateur en appuyant sur la touche Windows, tapez cmd, cliquez dessus avec le bouton droit et sélectionnez "Exécuter en tant qu'administrateur"

  2. Allez dans le répertoire "MySQL Server X.Y" (pour moi le chemin complet est C:\Program Files\MySQL\MySQL Server 5.7 ")

  3. en utilisant le bloc-notes, créez un fichier my.ini avec une section mysqld pointant vers votre répertoire de données.

    [mysqld]
    datadir="X:\Your Directory Path and Name"
    
  4. créé le répertoire identifié dans my.ini ci-dessus.

  5. passez dans le répertoire bin sous le répertoire du serveur et exécutez: mysqld --initialize

  6. Une fois terminé, le service a démarré et tout s'est bien passé.

11
Keith Ballantyne
  1. Vérifiez que le directeur existe. 
  2. S'il existe, assurez-vous que mysql dispose de droits d'accès (lecture/écriture). Cela peut être une bonne idée d’exécuter MySQL en tant que processus système, mais pas obligatoire.

Si cela ne fonctionne toujours pas, essayez la notation suivante avec des doubles barres obliques: C:\WebSerer\MySQL\data ou C:/WebServer/MySQL/data

7
Stephane Paquet

Première exécution 

mysqld -u root --initialize-insecure 

Il créera un dossier de données avec la racine en tant qu'utilisateur sans mot de passe. Puis courir 

mysqld.exe -u root --console
2
Nizar

Si vous avez installé MySQL Server à l'aide du programme d'installation Windows et en tant que service Windows, vous pouvez démarrer MySQL Server à l'aide de PowerShell et profiter de l'avantage de ne pas quitter la ligne de commande.

Ouvrez PowerShell et exécutez la commande suivante:

Get-Service *sql*

Une liste de services MySQL sera récupérée et affichée. Choisissez celui que vous voulez et exécutez la commande suivante en remplaçant nom-service par le nom du service actuel:

Start-Service -Name service-name

Terminé. Vous pouvez vérifier que le service est en cours d'exécution en exécutant à nouveau la commande Get-Service *sql* et en vérifiant le statut du service.

0
Edmond Weiss

mariofertc a complètement résolu ceci pour moi voici ses étapes:

  1. Vérifiez que le répertoire de données de mysql est vide (avant de le supprimer, sauvegardez le fichier d'erreur pour vos enregistrements).

  2. Sous le chemin d'accès mysql bin, exécutez la commande suivante: mysqld.exe --initialize-insecure

  3. ajoutez à my.ini (le fichier de configuration de mysql) ce qui suit: [mysqld] default_authentication_plugin = mysql_native_password

Ensuite, vérifiez les services (via le gestionnaire de tâches) pour vous assurer que MySql est en cours d'exécution, sinon - cliquez avec le bouton droit de la souris sur MySql et démarrez-le.

Je noterai également que si vous n'avez pas votre fichier de configuration mysql dans le répertoire mysql et que vous ne le trouvez pas via la recherche dans Windows, recherchez-le dans C:\Program Data\Mysql\pourrait être un nom différent de my.ini, comme un modèle, comme le mentionne Heesu ici: Impossible de trouver my.ini (mysql 5.7) Il suffit de trouver le modèle qui correspond à la version de votre mysql via la commande mysql --version

0
DRoberts

Vérifiez votre emplacement réel du fichier my.ini et définissez --defaults-file="location" avec cette commande

mysql --defaults-file="C:\MYSQL\my.ini" -u root -p

Cette solution est en permanence pour votre écran cmd.

0
Ferhat KOÇER

supprimez tous les fichiers du répertoire "{path-to-mysql}\data" et exécutez:

mysqld --initialize-insecure --basedir={path-to-mysql}\mysql --datadir={path-to-mysql}\data --console
0
Tom DE RUDDER

Dans MySQL 8.0.13, l'initialisation du paquet Zip.

  1. Vérifiez que le dossier de données est vide.
  2. Sous le chemin d'accès mysql bin

    mysqld.exe --initialize-insecure

  3. Ajouter à my.ini mysql native

    [mysqld]

    default_authentication_plugin=mysql_native_password

0
mariofertc

Quand j'ai rencontré cette même erreur, j'ai remarqué que le fichier de configuration MySQL dans "C:\Program Files\MySQL\Serveur MySQL X.Y \" a été remplacé par my-default.ini.

Je l'ai résolu par

  1. Copiez my.ini à partir de "C:\ProgramData\MySQL\Serveur MySQL X.Y\my.ini"
  2. Collez-le dans "C:\Program Files\MySQL\Serveur MySQL X.Y\my.ini"
  3. Redémarrez le serveur MySQL à partir de services.msc

Dans le fichier .ini, leur partie est la suivante:

# On Windows you should keep this file in the installation directory 
# of your server (e.g. C:\Program Files\MySQL\MySQL Server X.Y). To
# make sure the server reads the config file use the startup option 
# "--defaults-file". 
0
Suleiman Umar