mysqld: Das Verzeichnis kann nicht in Daten geändert werden. Server startet nicht

78

Ich habe einen MySQL-Server mit Installationsprogramm installiert und es wurde gestartet. Nach dem Neustart habe ich versucht, es erneut zu starten und den Fehler zu erhalten:

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

Ich habe versucht, MySQL neu zu installieren.
UPDATE:
Wenn ich mysqld -u root -pals Administrator ausgeführt werde, passiert nichts.

Feeco
quelle
2
Stellen
Das gleiche ist mir gerade passiert. Ich glaube, das Problem ist 1. nicht standardmäßiges Installationsverzeichnis (nicht C: \ ..) und \ oder 2. nicht standardmäßiges Datenverzeichnis und \ oder 3. MySQL nicht als Dienst installiert. Ich habe es mit der Antwort von nulliusinverba gelöst, obwohl es den Anschein hat, dass sich die Instanz (der Prozess) immer noch seltsam verhält.
Riva
Wenn Sie unter Windows installieren, empfehle ich dringend, das .msiInstallationsprogramm zu verwenden. Viel einfacher als manuelle Installation
Kolob Canyon
@ KolobCanyon Leider können Sie das MSI-Installationsprogramm nicht verwenden, um zwischen Hauptversionen zu aktualisieren
Ian

Antworten:

77

Da Sie das Windows-Installationsprogramm verwendet haben, ist alles so eingerichtet, dass Sie MySQL 5.7 als Windows-Dienst ausführen können. Dies ist in den meisten Fällen eine hervorragende Option.

Anstatt mysqld.exevon der Kommandozeile aus zu laufen ,

  1. Win + R
  2. Lauf services.msc
  3. Klicken Sie mit der rechten Maustaste auf MySQL57
  4. Starten Sie den Dienst.
Aaron Danielson
quelle
10
Außer wenn Sie während der Installation angeben (wie ich), dass Sie den MySQL-Server nicht als Dienst installieren möchten. Dann wird der Dienst überhaupt nicht erstellt und Sie werden vergeblich in Dienste danach suchen.
Riva
2
Wenn Sie ständig mit MySQL arbeiten, können Sie verlangen, dass es automatisch mit Windows geladen wird. Folgen Sie den Anweisungen von @AaronDanielson, klicken Sie mit der rechten Maustaste auf den MySQL57-Dienst, öffnen Sie "Eigenschaften" und ändern Sie den "Typ der Initialisierung" von "manuell" in "automatisch".
Renato Byrro
Wenn Sie in Windows als eingeschränkter Benutzer arbeiten, klicken Sie auf das Windows-Startsymbol, geben Sie services.msc ein, klicken Sie mit der rechten Maustaste darauf und starten Sie als Administrator.
Robi Wan Kenobi
1
Führen Sie zuerst "mysqld -u root --initialize-unsicher" aus. Es wird ein Datenordner mit root als Benutzer ohne Passwort und erforderliche Datei erstellt. Führen Sie dann "mysqld.exe --console" aus.
Nizar
Auf diese Weise wird die Init-Datei nicht verarbeitet und das Kennwort wird nicht zurückgesetzt. Es beginnt, aber ich kann immer noch nicht
rein
79

Ich habe das gleiche Problem getroffen. In meinem Fall hatte ich kein Verzeichnis ..\datain meinem, C:\mysql\also habe ich nur den mysqld --initializeBefehl aus dem c:\mysql\bin\Verzeichnis ausgeführt und das Datenverzeichnis in erhalten c:\mysql\data. Danach konnte ich den mysqld.exe --consoleBefehl verwenden, um den Serverstart zu testen.

Keerthiprasath
quelle
Die vollständige Prozedur zum Installieren und Konfigurieren der "noinstall" -Version des MySQL-Servers ist in den offiziellen Dokumenten beschrieben
mcont
1
Vergessen Sie auch nicht, das cmdas zu starten Administrator(dh mit der rechten cmd
Maustaste
1
Dies half mir, das Problem zu umgehen ([ERROR] konnte den Datadir nicht auf C: \ Programme \ MySQL \ MySQL Server 5.7 \ data \ setzen), als ich versuchte, root pw unter Windows 10 zurückzusetzen
Drahoš Maďar
25

In meinem Fall hatte ich das Datenverzeichnis an einem anderen Ort installiert. Das Datenverzeichnis befand sich also wirklich nicht am Standardspeicherort. Als ich den mysqldBefehl über die Eingabeaufforderung ausführte, musste ich das Datenverzeichnis daher manuell angeben:

mysqld --datadir=D:/MySQLData/Data

Hier ist die Dokumentation für mysqld-Befehlszeilenargumente.

Hanshan
quelle
Danke für diese Antwort. Es hat mein Problem gelöst. MySQL hat das Datenverzeichnis im ProgramData-Verzeichnis installiert, während mysqld es in den Programmdateien sucht. Mit Ihrer Antwort habe ich nur --datadir und bam angegeben, es hat funktioniert!
Michael Iyke
Dies funktionierte, als ich MariaDB Portable an einen anderen Ort verlegt hatte. Danke für die Antwort!
Benjamin Weiss
11

Was ich für eine Neuinstallation getan habe (Windows 10):

  1. Starten Sie cmd im Administratormodus (führen Sie es als Administrator aus, indem Sie die Windows-Taste drücken, cmd eingeben, mit der rechten Maustaste darauf klicken und "Als Administrator ausführen" auswählen.

  2. Wechseln Sie in das Verzeichnis "MySQL Server XY" (für mich lautet der vollständige Pfad C: \ Programme \ MySQL \ MySQL Server 5.7 ").

  3. Erstellen Sie mit dem Editor eine my.ini mit einem mysqld-Abschnitt, der auf Ihr Datenverzeichnis verweist

    [mysqld]
    datadir="X:\Your Directory Path and Name"
    
  4. hat das oben in my.ini angegebene Verzeichnis erstellt.

  5. Wechseln Sie in das bin-Verzeichnis unter dem Serververzeichnis und führen Sie Folgendes aus: mysqld --initialize

  6. Sobald der Vorgang abgeschlossen war, wurde der Dienst gestartet und es wurde einwandfrei ausgeführt.

Keith Ballantyne
quelle
Funktioniert für mich, aber wenn ich zum ersten Mal versuche, mich als root anzumelden, wird "Zugriff verweigert" angezeigt. Ich dachte, das Standard-Root-Passwort sei kein Passwort.
AjaxLeung
10

Erster Lauf

mysqld -u root --initialize-insecure 

Es wird ein Datenordner mit root als Benutzer ohne Passwort erstellt. Dann renne

mysqld.exe -u root --console
Nizar
quelle
Ich habe Ihre erste Anweisung ausgeführt und sie hat meinen Ordner "data" erstellt und danach wie eine Dokumentation: dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/… : Ich habe diese Anweisung ausgeführt: C: \> mysqld - -defaults-file = "C: \\ ProgramData \\ MySQL \\ MySQL Server 5.7 \\ my.ini" --init-file = C: \\ mysql-init.txt
vljc2004
7
  1. Überprüfen Sie, ob der Director vorhanden ist.
  2. Wenn es existiert, stellen Sie sicher, dass MySQL Zugriffsrechte hat (Lesen / Schreiben). Kann eine gute Idee sein, MySQL als Systemprozess auszuführen, ist aber nicht obligatorisch.

Wenn dies immer noch nicht funktioniert, versuchen Sie, die folgende Notation mit doppelten Schrägstrichen zu verwenden: C: \ WebSerer \ MySQL \ data oder C: / WebServer / MySQL / data

Stephane Paquet
quelle
3

In MySQL 8.0.13 Initialisierung des Zip-Pakets.

  1. Stellen Sie sicher, dass der Datenordner leer ist.

  2. Unter dem MySQL-Bin-Pfad laufen

    mysqld.exe --initialize-insecure

  3. Zu my.ini hinzufügen native mysql

    [mysqld]

    default_authentication_plugin=mysql_native_password

mariofertc
quelle
2

Als ich auf denselben Fehler stieß, bemerkte ich, dass die MySQL-Konfigurationsdatei in "C: \ Programme \ MySQL \ MySQL Server XY \" in my-default.ini geändert wurde

Ich habe es gelöst durch

  1. Kopieren Sie my.ini aus "C: \ ProgramData \ MySQL \ MySQL Server XY \ my.ini".
  2. Fügen Sie es in "C: \ Programme \ MySQL \ MySQL Server XY \ my.ini" ein.
  3. Starten Sie MySQL Server über services.msc neu

In der INI-Datei lautet ihr Teil:

# 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". 
Suleiman Umar
quelle
1

Überprüfen Sie Ihren tatsächlichen my.iniDateispeicherort und stellen Sie ihn --defaults-file="location"mit diesem Befehl ein

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

Diese Lösung ist permanent für Ihren cmd-Bildschirm.

Ferhat KOÇER
quelle
1

Entfernen Sie alle Dateien im Verzeichnis "{path-to-mysql} \ data" und führen Sie Folgendes aus:

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

mariofertc hat das für mich komplett gelöst hier sind seine schritte:

  1. Stellen Sie sicher, dass das Datenverzeichnis von mysql leer ist (bevor Sie es löschen, speichern Sie die Fehlerdatei für Ihre Datensätze).

  2. Führen Sie unter dem Pfad mysql bin Folgendes aus: mysqld.exe --initialize-unsicher

  3. Fügen Sie der Datei my.ini (Konfigurationsdatei von mysql) Folgendes hinzu: [mysqld] default_authentication_plugin = mysql_native_password

Überprüfen Sie dann die Dienste (über den Task-Manager), um sicherzustellen, dass MySql ausgeführt wird. Wenn nicht, klicken Sie mit der rechten Maustaste auf MySql und starten Sie es.

Ich werde auch beachten, wenn Sie Ihre MySQL-Konfigurationsdatei nicht im MySQL-Bin haben und sie nicht über die Windows-Suche finden können, sollten Sie sie unter C: \ Programme Data \ MySQL \ suchen. Beachten Sie, dass dies der Fall ist Möglicherweise handelt es sich um einen anderen Namen als my.ini, z. B. eine Vorlage, wie Heesu hier erwähnt: my.ini (mysql 5.7) kann nicht gefunden werden. Suchen Sie einfach die Vorlage, die der Version Ihrer mysql entspricht, über den Befehl mysql --version

DRoberts
quelle
0

Wenn Sie MySQL Server mit dem Windows-Installationsprogramm und als Windows-Dienst installiert haben, können Sie MySQL Server mit PowerShell starten und die Bequemlichkeit genießen, die Befehlszeile nicht zu verlassen.

Öffnen Sie PowerShell und führen Sie den folgenden Befehl aus:

Get-Service *sql*

Eine Liste der MySQL-Dienste wird abgerufen und angezeigt. Wählen Sie das, dass Sie den folgenden Befehl wollen und ausführen , während ersetzen Service-Namen mit dem aktuellen Service - Namen:

Start-Service -Name service-name

Erledigt. Sie können überprüfen, ob der Dienst ausgeführt wird, indem Sie den Befehl Get-Service *sql*erneut ausführen und den Status des Dienstes überprüfen.

Edmond Weiss
quelle
0

Diese Lösung verwendet das Windows MySQL-Installationsprogramm .

Ich habe jeden anderen hier erwähnten Weg und andere verwandte Beiträge ausprobiert, aber es hat mein Problem nicht gelöst, der Dienst wird einfach nicht gestartet, aber der folgende Ansatz mit dem MySQL-Installer hat es getan.

Wenn Sie Ihr Installationsprogramm noch haben oder sich mindestens an die Version erinnern, gehen Sie wie folgt vor:

  1. Starten Sie Ihr Windows MySQL-Installationsprogramm. Für mich war es "mysql-installer-community-8.0.20.0"
  2. Entfernen / deinstallieren Sie dann den SQL Server und entfernen Sie alle Konfigurationen
  3. Löschen Sie den SQL Server-Ordner manuell aus "C: \ Programme \ MySQL \ MySQL Server 8.0".
  4. Starten Sie Ihr MySQL-Installationsprogramm erneut und installieren Sie den SQL Server erneut

Sie können anhand der Dienste des Fensters überprüfen, ob der MySqL-Server gestartet wurde.

Hoffe es hilft jemandem.

Lazycoder_007
quelle
0

Suchen Sie nach fehlenden Ordnern, die vom Server benötigt werden. In meinem Fall war es der UPLOADS-Ordner in programData, der von dem zuvor verwendeten Dienstprogramm zum Löschen leerer Ordner gelöscht wurde.

Wie habe ich herausgefunden:

Führen Sie die Serverkonfigurationsdatei my.ini (in meinem Fall in programData) als Standarddateiparameter für mysqld aus (vergessen Sie nicht, die Option --console zu verwenden, um das Fehlerprotokoll auf dem Bildschirm anzuzeigen). 'mysqld --defaults-file = "C: \ ProgramData \ MySQL \ MySQL Server 8.0 \ my.ini" --console '

Error:

mysqld: Verzeichnis von 'C: \ ProgramData \ MySQL \ MySQL Server 8.0 \ Uploads \' kann nicht gelesen werden (Betriebssystem Errno 2 - Keine solche Datei oder kein solches Verzeichnis)

Lösung:

Nachdem ich den Uploads-Ordner manuell erstellt hatte, wurde der Server erfolgreich gestartet.

mahee96
quelle