Ist es möglich, mein Standard-MySQL-Datenverzeichnis in einen anderen Pfad zu ändern? Kann ich vom alten Speicherort aus auf die Datenbanken zugreifen?
Das Obige konnte das Problem für mich unter Ubuntu 12.04 (Precise) nicht lösen. Ich fand heraus, dass man die Datei /etc/apparmor.d/tunables/alias bearbeiten muss, um eine Zeile "alias / var / lib / mysql / -> / newpath /" einzuschließen. Mit dieser Option brauchte ich keine Änderungen in einer der anderen AppArmor-Dateien. Es funktionierte sofort nach dem Neustart von AppArmor mit "/etc/init.d/apparmor restart" und MySQL mit "restart mysql".
Vergessen Sie bei Maks Edition (was notwendig ist) nicht das Komma am Ende der Zeilealias /var/lib/mysql/ -> /newpath/,
Michael
4
Ich kann gar nicht genug betonen, wie wichtig Michels Kommentar oben ist: ADD TRAILING COMMA und rette einige Neuronen. Entschuldigung für die Kappen.
Alx
2
Funktioniert bei mir nicht Ich bekomme Job für mysql.service fehlgeschlagen. Weitere Informationen zum Neustart von mysqld finden Sie unter 'systemctl status mysql.service' und 'journalctl -xn'. Der Fehler besteht darin, dass die Festplatte voll ist. Es hat 500 GB freien Speicherplatz ...
Frank H.
17
Schnell und einfach zu erledigen:
#Create new directory for MySQL data
mkdir /new/dir/for/mysql
#Set ownership of new directory tomatch existing one
chown --reference=/var/lib/mysql /new/dir/for/mysql#Set permissions on new directory tomatch existing one
chmod --reference=/var/lib/mysql /new/dir/for/mysql# Stop MySQL before copying over files
service mysql stop
# Copy all files indefault directory,to new one, retaining perms (-p)
cp -rp /var/lib/mysql/* /new/dir/for/mysql/
Bearbeiten Sie die /etc/my.cnfDatei und [mysqld]fügen Sie unter diese Zeile hinzu:
datadir=/new/dir/for/mysql/
Wenn Sie CageFS (mit oder ohne CloudLinux) verwenden und das MySQL-Verzeichnis ändern möchten, MÜSSEN Sie das neue Verzeichnis zu dieser Datei hinzufügen:
Vielen Dank, und um hinzuzufügen, wenn Sie dies wie ich vollständig skripten möchten, können Sie Folgendes verwenden: sed -is | datadir = / var / lib / mysql | datadir = / data / var / lib / mysql | g '/ etc / my.cnf
berimbolo
Das hat bei mir nicht funktioniert. Ich habe dies und viele andere Alternativen ausprobiert. Ich komme zu dem gleichen Schluss wie user3338098, wenn er sagt, dass dies der einzige Weg ist, der funktioniert: serverfault.com/questions/503887/…
Volksman
@Volksman Alles, was dieser Link sagt, ist, dass er entfernen und neu installieren musste ... Wahrscheinlich haben Sie beide ein anderes serverspezifisches Problem, da sowohl MySQL als auch MariaDB die Datadir-Konfiguration unterstützen, und ich habe dies kürzlich (vor 6 Monaten) auf einem anderen getan Server ohne Probleme
sMyles
@sMyles ja, es wurde entfernt und installiert, aber nach dem Mounten von / var / lib / mysql an einer anderen Stelle, dh einer Mega-Partition im Gegensatz zu der, an die / var zuvor gemountet wurde. Wenn es ein spezifisches Problem mit unseren Systemen gibt, wäre es großartig, dies herauszufinden. Dies war eine Neuinstallation von Centos 7 OS mit RAID 10 mit 8x HDD, aber normalerweise sind solche Details des Festplattenarrays für die Software transparent.
Volksman
15
Sie müssten die aktuellen Daten in das neue Verzeichnis kopieren und my.cnfIhr MySQL ändern .
Das kann ich nicht. Ich möchte das Verzeichnis ändern, aber ich möchte neue Datenbanken in einem neuen Verzeichnis erstellen. Und Sie möchten sowohl auf alte als auch auf neue Verzeichnisdatenbanken zugreifen.
MySQL DBA
1
@ MySQL DBA: Wenn Sie einen ln -sstatischen symbolischen Luchs verwenden, schafft das das nicht?
RageZ
Nun, ich bin etwas verwirrt mit der Verwendung dieses Befehls. Wie ich zuvor erklärt habe, möchte ich neue Datenbanken in einem neuen Verzeichnis erstellen. Ist es mit symlink möglich.
MySQL DBA
1
Sie können ein neues Verzeichnis erstellen, einen symbolischen Link verwenden, um die Datei im neuen my.cnf
Verzeichnis anzuzeigen,
2
nach unten gestimmt, weil es nicht so detailliert funktioniert
user3338098
14
Zuerst sollten Sie den MySQL-Server stoppen. z.B
#/etc/init.d/mysql stop
Danach sollten Sie das alte Datenverzeichnis (zB / var / lib / mysql) inkl. Berechtigungen für Ihr neues Verzeichnis über
# cp -R -p /var/lib/mysql /new/data/dir
Jetzt können Sie /etc/mysql/my.cnfdie Daten neu ändern und den Server neu starten
abgewählt, weil es nicht so detailliert funktioniert
user3338098
7
Wenn Sie wie ich auf Debian sind und das MySQL-Verzeichnis zu Ihnen nach Hause oder zu einem Pfad auf / home / ... verschieben möchten, lautet die Lösung:
Stoppen Sie MySQL durch "Sudo Service MySQL Stop"
Ändern Sie die Variable "datadir" in den neuen Pfad in "/etc/mysql/mariadb.conf.d/50-server.cnf".
Führen Sie eine Sicherung von / var / lib / mysql durch: "cp -R -p / var / lib / mysql / path_to_my_backup"
lösche dieses Verzeichnis: "sudo rm -R / var / lib / mysql"
Verschieben Sie die Daten in das neue Verzeichnis: "cp -R -p / path_to_my_backup / path_new_dir
Ändern Sie den Zugriff durch "sudo chown -R mysql: mysql / path_new_dir"
Ändern Sie die Variable "ProtectHome" durch "false" in "/etc/systemd/system/mysqld.service".
Systemd neu laden durch "sudo systemctl daemon-reload"
Starten Sie mysql neu durch "service mysql restart"
Eines Tages, um die Lösung für mich in der Mariadb-Dokumentation zu finden. Hoffe das hilft einigen Jungs!
Die Datei /etc/systemd/system/mysqld.service ist nicht hier. Irgendeine Idee, wo ich suchen soll?
Ron Piggott
1
Für diejenigen mit MariaDB der Dienst wird Datei an sich /lib/systemd/system/[email protected]
Ron Piggott
5
Ich wollte eine Datenbank auf meinem Computer behalten, aber auch Daten auf meiner externen Festplatte haben und zwischen der Verwendung der beiden wechseln.
Wenn Sie auf einem Mac arbeiten und MySQL mit Homebrew installiert haben, sollte dies für Sie funktionieren. Andernfalls müssen Sie nur die entsprechenden Speicherorte für MySQL datadirauf Ihrem Computer ersetzen .
#cd to my data dir location
cd /usr/local/var/#copy contents of local data directory to the new location
cp -r mysql//Volumes/myhd/mydatadir/#temporarily move the old datadir
mv mysql mysql.local
#symlink to the new location
ln -s /Volumes/myhd/mydatadir mysql
Wenn Sie dann zurückschalten möchten, tun Sie einfach Folgendes:
mv mysql mysql.remote
mv mysql.local mysql
und Sie verwenden wieder Ihre lokale Datenbank. Hoffentlich hilft das.
Dies ist nicht genau die Antwort auf die Frage wie angegeben - aber genau das war es, wonach ich gesucht habe - und es ist eine gute Möglichkeit, einen Randfall / Fehler zu behandeln, mit dem my.cnf Leerzeichen nicht gut behandelt: bugs.mysql.com /bug.php?id=26033 . Ich werde diese Problemumgehung mit diesem Fehlerbericht verknüpfen.
gabe
unten gewählt, weil es nicht so detailliert funktioniert
Ändern Sie dann das Datadir in Ihrem /etc/mysql/my.cnf
Start mysqld
Hinweise:
# 1: Wahrscheinlich müssen Sie Ihre SELinux-Einstellungen anpassen (bei Problemen mit deaktiviertem SELinux ausprobieren). Möglicherweise ist auch Apparmor (Ubuntu) ein Problem.
unten gewählt, weil es nicht so detailliert funktioniert
user3338098
Vielleicht funktioniert dies nicht für andere Distributionen, aber wenn Sie Ubuntu verwenden, funktioniert dies gut für mich und ich ändere den Pfad für jeden neu installierten Ubuntu-Server, um raid0 zu aktivieren.
Naddame
2
Ich weiß, dass die Leute dies ablehnen, aber ich möchte Ihnen sagen, dass dies meinen Tag gerettet hat. Vielen Dank!
Daniel Loureiro
3
Diese Lösung funktioniert in Windows 7 mit Workbench. Dazu benötigen Sie Administratorrechte. Es wird eine Verbindung (wie eine Verknüpfung) zu dem Ort erstellt, an dem Sie Ihre Daten wirklich speichern möchten
Öffnen Sie die Workbench und wählen Sie INSTANZ - Starten / Herunterfahren. Stoppen Sie den Server
Navigieren Sie zu C: \ ProgramData \ MySQL \ MySQL Server 5.6
Klicken Sie mit der rechten Maustaste auf Daten und wählen Sie "Verschieben und dann Ordner verknüpfen nach ...". Akzeptieren Sie das Warnpunktziel auf "Ihr neues Datenverzeichnis hier ohne Anführungszeichen". Klicken Sie auf Verschieben und verknüpfen
Gehen Sie nun zu "Ihr neues Datenverzeichnis hier ohne Anführungszeichen".
Klicken Sie mit der rechten Maustaste auf Daten. Wechseln Sie zur Registerkarte Sicherheit. Klicken Sie auf Bearbeiten. Klicken Sie auf Typ hinzufügen. NETZWERKSERVICE und dann auf Namen. Klicken Sie auf OK. Klicken Sie auf OK. Aktivieren Sie das Kontrollkästchen Vollzugriff zulassen und dann auf OK
Gehen Sie zurück zur Workbench und starten Sie den Server
Diese Methode funktionierte bei mir mit MySQL Workbench 6.2 unter Windows 7 Enterprise.
Sie sollten sich besser nicht ändern. /etc/mysql/my.cnf
Stattdessen möchten Sie eine neue Datei erstellen /etc/mysql/conf.d/ext.cnf(ein beliebiger Name, aber die Erweiterung sollte sein cnf).
Und setzen Sie Ihr Wechselgeld ein:
[mysqld]
datadir=/vagrant/mq/mysql
Auf diese Weise
Sie müssen keine vorhandene Datei ändern (einfacher für Automatisierungsskripte).
Keine Probleme mit dem Update der MySQL-Version (und der Konfiguration!).
Ich muss dies oft tun, wenn ich Maschinen aktualisiere und von Box zu Box gehe. Zusätzlich zum Verschieben von / var / lib / mysql an einen besseren Speicherort muss ich häufig alte DB-Tabellen aus einer alten MySQL-Installation wiederherstellen. Um dies zu tun...
Stoppen Sie MySQL. Befolgen Sie dazu die obigen Anweisungen.
Kopieren Sie die Datenbankverzeichnisse - für jede Datenbank Ihrer alten Installation gibt es eines - an den neuen DATADIR-Speicherort. Lassen Sie jedoch die Verzeichnisse "mysql" und "performance_schema" weg.
Korrigieren Sie die Berechtigungen in den kopierten Datenbankverzeichnissen. Eigentümer sollte MySQL sein: MySQL, Verzeichnisse sollten 700 sein und Dateien sollten 660 sein.
Starten Sie MySQL neu. Abhängig von Ihrer Installation sollten DB-Dateien der alten Version aktualisiert werden.
Entschuldigung für die Abwertung, diese Lösung ist möglicherweise richtig, habe sie noch nicht ausprobiert.
user3338098
1
Wir mussten MySQL in ein /homeVerzeichnis verschieben, da es von einer anderen physischen CD zugeordnet wurde. Um das Leben zu vereinfachen, haben wir das neue Verzeichnis /home/mysqlanstelle des ursprünglichen Verzeichnisses zugeordnet , anstatt das Verzeichnis in my.cnf zu ändern/var/lib/mysql . Es funktioniert für uns wie ein Zauber (getestet unter CentOS 7.1).
Erstellen Sie das neue Verzeichnis und legen Sie die richtigen Berechtigungen fest.
Wenn Sie dies programmgesteuert tun möchten (keine manuelle Texteingabe mit gedit), finden Sie hier eine Version für eine Docker-Datei, die auf der obigen Antwort von user1341296 basiert:
FROM spittet/ruby-mysql
MAINTAINER you@gmail.com
RUN cp -R -p /var/lib/mysql /dev/shm &&\
rm -rf /var/lib/mysql &&\
sed -i -e 's,/var/lib/mysql,/dev/shm/mysql,g'/etc/mysql/my.cnf &&\/etc/init.d/mysql restart
Wenn Sie ein Windows-Benutzer sind und hier gelandet sind, um herauszufinden, dass alle Antworten für Linux-Benutzer sind, werden Sie nicht enttäuscht! Ich werde dich nicht so Zeit verschwenden lassen wie ich.
Ein bisschen Bullshit Talk vor der Lösung:
MySQL verwendet ein Datenverzeichnis, um die Daten verschiedener von Ihnen erstellter Datenbanken zu speichern. Nun, am Ende müssen sie in Form von Dateien mit zusätzlichem Jongleur in der Anwendung und im Dateiformat gespeichert werden, um sicherzustellen, dass die Datenbankversprechen, die Sie in Datenbankklassen gelernt haben, intakt sind.
Jetzt möchten Sie sicherstellen, dass genügend Speicherplatz für große Datenbanken vorhanden ist, die Sie möglicherweise in Zukunft erstellen, und Sie dachten: Hey! Ich möchte es in ein anderes Laufwerk stecken, das mehr Platz hat.
Also machst du folgendes.
Schritt 1 : Beenden des MySQL-Dienstes.
Window Key+ R - will open Run
servies.msc - will open services manager
Locate MySQL80 (80isfor version 8.0, look for the one you've).
Stop it.(Right click, Stop)
Schritt - 2 : Ermitteln des aktuellen Datenverzeichnisses
Goto C:\ProgramData\MySQL\MySQL Server 8.0
Standardmäßig sollte hier ein Ordner mit dem Namen vorhanden sein Data. Dieser Ordner wird von MySQL in der Standardeinstellung verwendet (vorausgesetzt, sie haben keinen anderen besseren Speicherort gefunden). Schauen wir uns das jedoch an.
my.iniDatei suchen , sollte genau dort sein.
Öffnen Sie es in einem Editor (Notepad ++ vielleicht).
Führen Sie STRG + F aus, um dies datadirin der Datei herauszufinden .
Was hier erwähnt wird, ist der tatsächliche Speicherort, der derzeit von MySQL für das Datenverzeichnis verwendet wird. Das möchten Sie ändern.
Schritt - 3 : Ersetzen Sie es durch ein neues Datenverzeichnis.
Angenommen, Ihr neues Datenverzeichnis soll W: __ MySQL_Data sein. Lassen Sie uns den datadirWert in der my.iniDatei in diesen Wert ändern
. Behalten Sie den vorherigen Wert bei, damit Sie sich nicht daran erinnern müssen.
# Path to the database root
# datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
datadir=W:/__MySQL_Data
Verwenden Sie nun, xcopyum die Standardeinstellung datadirnach zu kopieren W:\. Eingabeaufforderung starten (Fenster + R, cmd, Eingabetaste)
>> xcopy "\C:\ProgramData\MySQL\MySQL Server 8.0""W:\"/E /H /K /O /X
Benennen Sie den kopierten Ordner in den neuen datadirWert um, den Sie geändert haben. Hier:W:/__MySQL_Data
Warum nicht einfach kopieren? Nun, weil das nicht COOL! Ist, können Sie die Berechtigungen für den kopierten Ordner nicht verlieren, sodass beim Neustart MySQL80kein dummer Fehler auftritt: "Der MySQL80-Dienst auf dem lokalen Computer wurde gestartet und dann gestoppt. Einige Dienste werden automatisch gestoppt, wenn Sie werden nicht von anderen Diensten oder Programmen verwendet. " - Mit freundlicher Genehmigung von Microsoft
Schritt - 4 : Starten Sie den Dienst neu
Well, go back to the Services Manager toStart again,"MySQL80" that you stopped,to restart it again.
Schritt - 5 : Fertig! Jetzt mach dich wieder an die Arbeit !!
Vielen Dank, das war hilfreich, aber Warnung: my.ini kann von einem normalen Benutzer nur geschrieben werden, wenn Sie seine Berechtigungen ändern. Oh, und ProgramData ist ein versteckter Ordner, daher müssen Sie die Explorer-Ordnereinstellungen ändern, um ihn anzuzeigen.
JonP
0
Zunächst sollten Sie wissen, wo sich Ihre Konfigurationsdatei befindet. Wo ist deine Konfigurationsdatei?
WENN Sie mit apt-get oder yum install installiert haben。
Konfigurationsdatei kann in erscheinen
/etc/mysql/my.cnf
Datendatei kann in erscheinen
/ var / lib / mysql
und was Sie tun sollten, ist
hör auf mysql
Ändern Sie die MySQL-Daten in ein neues Verzeichnis
Ändern Sie die Konfigurationsdatei
Laden Sie die Konfigurationsdatei neu
Starten Sie MySQL neu
und dann erledigt.
Aber wenn Sie es nicht mit apt oder yum installiert haben, mag die Direcotry dies möglicherweise nicht und Sie können die MySQL-Dateien mit finden
unten gewählt, weil es nicht so detailliert funktioniert
user3338098
0
Unter SuSE 13.1 funktioniert dies einwandfrei, um das MySQL-Datenverzeichnis an eine andere Stelle zu verschieben, z. B. nach / home / example_user /, und um ihm einen informativeren Namen zu geben:
In / var / lib /:
# mv -T mysql /home/example_user/mysql_datadir
# ln -s /home/example_user/mysql_datadir ./mysql
Für eine der Umgebungen habe ich das MySQL-Datenverzeichnis in einen neuen Speicherort geändert, aber beim Neustart des MySQL-Servers hat es einige Zeit gedauert. Also überprüfte ich den Port und stellte fest, dass ein anderer Prozess den MySQL-Port abhörte. Also habe ich den Prozess abgebrochen und den MySQL-Server neu gestartet und es hat gut funktioniert.
Willkommen bei Stack Overflow! Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Tim Diekmann
0
Die oben genannten Schritte sind grundlegend und grundlegend. Ich folgte ihnen und bekam immer noch die Fehlermeldung "MySQL konnte nicht gestartet werden".
Damit der neue Ordner MySQL-Daten speichern kann, müssen Sie sicherstellen, dass der Ordner über Berechtigungen und Eigentümer verfügt. Mysql: mysql.
Außerdem muss es die Berechtigungen und den Besitz des übergeordneten Verzeichnisses von mysql überprüfen, wenn beispielsweise / data / mysql / vorhanden ist. Hier sollte / data / directory root sein: root. Ich habe den Fehler "mysql konnte nicht gestartet werden" behoben, nachdem ich den Besitz des übergeordneten Verzeichnisses von / mysql geändert habe. Das Betriebssystem in meiner VM ist RHEL 7.6.
Ich habe versucht, Selinux in RHEL7.6 durch Ändern von SELINUX = Erzwingen in SELINUX = Zulässig zu ändern, hat bei mir nicht funktioniert.
user3325137William
0
Es ist auch möglich, den Datenverzeichnis zu verknüpfen. Zumindest in MacOS, Dev-Umgebung.
(Homebrew) zB
# make sure you're not overwriting anything important,backup existing data
mv /usr/local/var/mysql [your preferred data directory]
ln -s [your preferred data directory]/usr/local/var/mysql
Wenn Sie SE Linux verwenden, setzen Sie es in den zulässigen Modus, indem Sie / etc / selinux / config bearbeiten und SELINUX = erzwingen in SELINUX = zulässig ändern
Antworten:
Stoppen Sie MySQL mit dem folgenden Befehl:
Kopieren Sie das vorhandene Datenverzeichnis (Standard in
/var/lib/mysql
) mit dem folgenden Befehl:Bearbeiten Sie die MySQL-Konfigurationsdatei mit dem folgenden Befehl:
Suchen Sie nach dem Eintrag für
datadir
und ändern Sie den Pfad (der sein sollte/var/lib/mysql
) zum neuen Datenverzeichnis.Geben Sie im Terminal den folgenden Befehl ein:
Suchen Sie nach Zeilen, die mit beginnen
/var/lib/mysql
. Ändern Sie/var/lib/mysql
die Zeilen mit dem neuen Pfad.Speichern und schließen Sie die Datei.
Starten Sie die AppArmor-Profile mit dem folgenden Befehl neu:
Starten Sie MySQL mit dem folgenden Befehl neu:
Melden Sie sich jetzt bei MySQL an und Sie können auf dieselben Datenbanken zugreifen, die Sie zuvor hatten.
quelle
alias /var/lib/mysql/ -> /newpath/,
Schnell und einfach zu erledigen:
Bearbeiten Sie die
/etc/my.cnf
Datei und[mysqld]
fügen Sie unter diese Zeile hinzu:Wenn Sie CageFS (mit oder ohne CloudLinux) verwenden und das MySQL-Verzeichnis ändern möchten, MÜSSEN Sie das neue Verzeichnis zu dieser Datei hinzufügen:
Führen Sie dann diesen Befehl aus:
quelle
Sie müssten die aktuellen Daten in das neue Verzeichnis kopieren und
my.cnf
Ihr MySQL ändern .Sie müssen die Datenbank kopieren, wenn der Server nicht ausgeführt wird .
quelle
ln -s
statischen symbolischen Luchs verwenden, schafft das das nicht?my.cnf
Zuerst sollten Sie den MySQL-Server stoppen. z.B
Danach sollten Sie das alte Datenverzeichnis (zB / var / lib / mysql) inkl. Berechtigungen für Ihr neues Verzeichnis über
Jetzt können Sie
/etc/mysql/my.cnf
die Daten neu ändern und den Server neu startenquelle
Wenn Sie wie ich auf Debian sind und das MySQL-Verzeichnis zu Ihnen nach Hause oder zu einem Pfad auf / home / ... verschieben möchten, lautet die Lösung:
Eines Tages, um die Lösung für mich in der Mariadb-Dokumentation zu finden. Hoffe das hilft einigen Jungs!
quelle
Ich wollte eine Datenbank auf meinem Computer behalten, aber auch Daten auf meiner externen Festplatte haben und zwischen der Verwendung der beiden wechseln.
Wenn Sie auf einem Mac arbeiten und MySQL mit Homebrew installiert haben, sollte dies für Sie funktionieren. Andernfalls müssen Sie nur die entsprechenden Speicherorte für MySQL
datadir
auf Ihrem Computer ersetzen .Wenn Sie dann zurückschalten möchten, tun Sie einfach Folgendes:
und Sie verwenden wieder Ihre lokale Datenbank. Hoffentlich hilft das.
quelle
Stoppen Sie zuerst mysqld
Ändern Sie dann das Datadir in Ihrem
/etc/mysql/my.cnf
Start mysqld
Hinweise:
# 1: Wahrscheinlich müssen Sie Ihre SELinux-Einstellungen anpassen (bei Problemen mit deaktiviertem SELinux ausprobieren). Möglicherweise ist auch Apparmor (Ubuntu) ein Problem.
# 2: Siehe MySQL Install DB-Referenz
quelle
Stoppen Sie zuerst Ihr MySQL
Kopieren Sie MySQL-Daten an den neuen Speicherort.
Wenn Sie Apparmor verwenden, bearbeiten Sie die folgende Datei und gehen Sie wie folgt vor
Ersetzen Sie wo / var / lib / durch / yourdirectory / und fügen Sie das Folgende hinzu, falls der Datei keine vorhanden ist
Speichern Sie die Datei mit dem Befehl
Bearbeiten Sie die Datei my.cnf
Ersetzen Sie wo / var / lib / durch / yourdirectory / und speichern Sie dann mit dem Befehl
Starten Sie endlich MySQL
@sehe mehr über raid0, Optimierung ici
quelle
Diese Lösung funktioniert in Windows 7 mit Workbench. Dazu benötigen Sie Administratorrechte. Es wird eine Verbindung (wie eine Verknüpfung) zu dem Ort erstellt, an dem Sie Ihre Daten wirklich speichern möchten
Öffnen Sie die Workbench und wählen Sie INSTANZ - Starten / Herunterfahren. Stoppen Sie den Server
Installieren Sie Junction Master von https://bitsum.com/junctionmaster.php
Navigieren Sie zu C: \ ProgramData \ MySQL \ MySQL Server 5.6
Klicken Sie mit der rechten Maustaste auf Daten und wählen Sie "Verschieben und dann Ordner verknüpfen nach ...". Akzeptieren Sie das Warnpunktziel auf "Ihr neues Datenverzeichnis hier ohne Anführungszeichen". Klicken Sie auf Verschieben und verknüpfen
Gehen Sie nun zu "Ihr neues Datenverzeichnis hier ohne Anführungszeichen".
Klicken Sie mit der rechten Maustaste auf Daten. Wechseln Sie zur Registerkarte Sicherheit. Klicken Sie auf Bearbeiten. Klicken Sie auf Typ hinzufügen. NETZWERKSERVICE und dann auf Namen. Klicken Sie auf OK. Klicken Sie auf OK. Aktivieren Sie das Kontrollkästchen Vollzugriff zulassen und dann auf OK
Gehen Sie zurück zur Workbench und starten Sie den Server
Diese Methode funktionierte bei mir mit MySQL Workbench 6.2 unter Windows 7 Enterprise.
quelle
Alles wie @ user1341296 sagte, plus ...
Sie sollten sich besser nicht ändern.
/etc/mysql/my.cnf
Stattdessen möchten Sie eine neue Datei erstellen/etc/mysql/conf.d/ext.cnf
(ein beliebiger Name, aber die Erweiterung sollte seincnf
).Und setzen Sie Ihr Wechselgeld ein:
Auf diese Weise
quelle
Ich muss dies oft tun, wenn ich Maschinen aktualisiere und von Box zu Box gehe. Zusätzlich zum Verschieben von / var / lib / mysql an einen besseren Speicherort muss ich häufig alte DB-Tabellen aus einer alten MySQL-Installation wiederherstellen. Um dies zu tun...
quelle
Wir mussten MySQL in ein
/home
Verzeichnis verschieben, da es von einer anderen physischen CD zugeordnet wurde. Um das Leben zu vereinfachen, haben wir das neue Verzeichnis/home/mysql
anstelle des ursprünglichen Verzeichnisses zugeordnet , anstatt das Verzeichnis in my.cnf zu ändern/var/lib/mysql
. Es funktioniert für uns wie ein Zauber (getestet unter CentOS 7.1).Erstellen Sie das neue Verzeichnis und legen Sie die richtigen Berechtigungen fest.
Stoppen Sie MySQL, wenn Sie ausgeführt werden.
Verschieben Sie das Datenverzeichnis.
Erstellen Sie ein permanentes Mount und führen Sie es aus.
Starten Sie den Server neu.
quelle
Wenn Sie dies programmgesteuert tun möchten (keine manuelle Texteingabe mit gedit), finden Sie hier eine Version für eine Docker-Datei, die auf der obigen Antwort von user1341296 basiert:
Verfügbar im Docker Hub hier: https://hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/
quelle
Wenn Sie ein Windows-Benutzer sind und hier gelandet sind, um herauszufinden, dass alle Antworten für Linux-Benutzer sind, werden Sie nicht enttäuscht! Ich werde dich nicht so Zeit verschwenden lassen wie ich.
Ein bisschen Bullshit Talk vor der Lösung:
MySQL verwendet ein Datenverzeichnis, um die Daten verschiedener von Ihnen erstellter Datenbanken zu speichern. Nun, am Ende müssen sie in Form von Dateien mit zusätzlichem Jongleur in der Anwendung und im Dateiformat gespeichert werden, um sicherzustellen, dass die Datenbankversprechen, die Sie in Datenbankklassen gelernt haben, intakt sind.
Jetzt möchten Sie sicherstellen, dass genügend Speicherplatz für große Datenbanken vorhanden ist, die Sie möglicherweise in Zukunft erstellen, und Sie dachten: Hey! Ich möchte es in ein anderes Laufwerk stecken, das mehr Platz hat.
Also machst du folgendes.
Schritt 1 : Beenden des MySQL-Dienstes.
Schritt - 2 : Ermitteln des aktuellen Datenverzeichnisses
Standardmäßig sollte hier ein Ordner mit dem Namen vorhanden sein
Data
. Dieser Ordner wird von MySQL in der Standardeinstellung verwendet (vorausgesetzt, sie haben keinen anderen besseren Speicherort gefunden). Schauen wir uns das jedoch an.my.ini
Datei suchen , sollte genau dort sein.Öffnen Sie es in einem Editor (Notepad ++ vielleicht).
Führen Sie STRG + F aus, um dies
datadir
in der Datei herauszufinden .Was hier erwähnt wird, ist der tatsächliche Speicherort, der derzeit von MySQL für das Datenverzeichnis verwendet wird. Das möchten Sie ändern.
Schritt - 3 : Ersetzen Sie es durch ein neues Datenverzeichnis.
Angenommen, Ihr neues Datenverzeichnis soll W: __ MySQL_Data sein. Lassen Sie uns den
datadir
Wert in dermy.ini
Datei in diesen Wert ändern . Behalten Sie den vorherigen Wert bei, damit Sie sich nicht daran erinnern müssen.Verwenden Sie nun,
xcopy
um die Standardeinstellungdatadir
nach zu kopierenW:\
. Eingabeaufforderung starten (Fenster + R, cmd, Eingabetaste)Benennen Sie den kopierten Ordner in den neuen
datadir
Wert um, den Sie geändert haben. Hier:W:/__MySQL_Data
Warum nicht einfach kopieren? Nun, weil das nicht COOL! Ist, können Sie die Berechtigungen für den kopierten Ordner nicht verlieren, sodass beim Neustart
MySQL80
kein dummer Fehler auftritt: "Der MySQL80-Dienst auf dem lokalen Computer wurde gestartet und dann gestoppt. Einige Dienste werden automatisch gestoppt, wenn Sie werden nicht von anderen Diensten oder Programmen verwendet. " - Mit freundlicher Genehmigung von MicrosoftSchritt - 4 : Starten Sie den Dienst neu
Schritt - 5 : Fertig! Jetzt mach dich wieder an die Arbeit !!
quelle
Zunächst sollten Sie wissen, wo sich Ihre Konfigurationsdatei befindet. Wo ist deine Konfigurationsdatei?
WENN Sie mit apt-get oder yum install installiert haben。
Konfigurationsdatei kann in erscheinen
Datendatei kann in erscheinen
und was Sie tun sollten, ist
und dann erledigt.
Aber wenn Sie es nicht mit apt oder yum installiert haben, mag die Direcotry dies möglicherweise nicht und Sie können die MySQL-Dateien mit finden
quelle
Unter SuSE 13.1 funktioniert dies einwandfrei, um das MySQL-Datenverzeichnis an eine andere Stelle zu verschieben, z. B. nach / home / example_user /, und um ihm einen informativeren Namen zu geben:
In / var / lib /:
Ich habe mysql neu gestartet:
aber vermute, dass auch das nicht nötig war.
quelle
Für eine der Umgebungen habe ich das MySQL-Datenverzeichnis in einen neuen Speicherort geändert, aber beim Neustart des MySQL-Servers hat es einige Zeit gedauert. Also überprüfte ich den Port und stellte fest, dass ein anderer Prozess den MySQL-Port abhörte. Also habe ich den Prozess abgebrochen und den MySQL-Server neu gestartet und es hat gut funktioniert.
Ich habe die folgenden Schritte zum Ändern des Datenverzeichnisses ausgeführt, was hervorragend funktioniert hat. Ändern Sie das MySQL-Datenverzeichnis unter Linux
quelle
Die oben genannten Schritte sind grundlegend und grundlegend. Ich folgte ihnen und bekam immer noch die Fehlermeldung "MySQL konnte nicht gestartet werden".
Damit der neue Ordner MySQL-Daten speichern kann, müssen Sie sicherstellen, dass der Ordner über Berechtigungen und Eigentümer verfügt. Mysql: mysql.
Außerdem muss es die Berechtigungen und den Besitz des übergeordneten Verzeichnisses von mysql überprüfen, wenn beispielsweise / data / mysql / vorhanden ist. Hier sollte / data / directory root sein: root. Ich habe den Fehler "mysql konnte nicht gestartet werden" behoben, nachdem ich den Besitz des übergeordneten Verzeichnisses von / mysql geändert habe. Das Betriebssystem in meiner VM ist RHEL 7.6.
quelle
Es ist auch möglich, den Datenverzeichnis zu verknüpfen. Zumindest in MacOS, Dev-Umgebung.
(Homebrew) zB
Starten Sie MySQL neu.
quelle
Wenn Sie SE Linux verwenden, setzen Sie es in den zulässigen Modus, indem Sie / etc / selinux / config bearbeiten und SELINUX = erzwingen in SELINUX = zulässig ändern
quelle
datadir
Eigenschaft verhindert