Wie ändere ich das MySQL-Datenverzeichnis?

158

Ist es möglich, mein Standard-MySQL-Datenverzeichnis in einen anderen Pfad zu ändern? Kann ich vom alten Speicherort aus auf die Datenbanken zugreifen?

MySQL DBA
quelle
3
Gibt es Antworten auf diese Frage, wenn das System in Win8?
Jonathan M
1
Für Windows - schauen Sie hier: dba.stackexchange.com/questions/24403/…
Dr. Aaron Dishno
Für Mac-Benutzer benötigen Sie lediglich diesen und den Schritt 1-4 aus der Antwort von @ user1341296.
Shellbye

Antworten:

270
  1. Stoppen Sie MySQL mit dem folgenden Befehl:

    sudo /etc/init.d/mysql stop
  2. Kopieren Sie das vorhandene Datenverzeichnis (Standard in /var/lib/mysql) mit dem folgenden Befehl:

    sudo cp -R -p /var/lib/mysql /newpath
  3. Bearbeiten Sie die MySQL-Konfigurationsdatei mit dem folgenden Befehl:

    sudo gedit /etc/mysql/my.cnf   # or perhaps /etc/mysql/mysql.conf.d/mysqld.cnf
  4. Suchen Sie nach dem Eintrag für datadirund ändern Sie den Pfad (der sein sollte /var/lib/mysql) zum neuen Datenverzeichnis.

  5. Geben Sie im Terminal den folgenden Befehl ein:

    sudo gedit /etc/apparmor.d/usr.sbin.mysqld
  6. Suchen Sie nach Zeilen, die mit beginnen /var/lib/mysql. Ändern Sie /var/lib/mysqldie Zeilen mit dem neuen Pfad.

  7. Speichern und schließen Sie die Datei.

  8. Starten Sie die AppArmor-Profile mit dem folgenden Befehl neu:

    sudo /etc/init.d/apparmor reload
  9. Starten Sie MySQL mit dem folgenden Befehl neu:

    sudo /etc/init.d/mysql restart
  10. Melden Sie sich jetzt bei MySQL an und Sie können auf dieselben Datenbanken zugreifen, die Sie zuvor hatten.

user1341296
quelle
33
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".
Mak
2
Apparmor ist unter CentOS nicht relevant. Es gibt stattdessen SELinux. Lesen Sie hier, wie Sie blogs.oracle.com/jsmyth/entry/selinux_and_mysql
Noam
12
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 to match existing one
chown --reference=/var/lib/mysql /new/dir/for/mysql

# Set permissions on new directory to match existing one
chmod --reference=/var/lib/mysql /new/dir/for/mysql

# Stop MySQL before copying over files
service mysql stop

# Copy all files in default 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:

/etc/cagefs/cagefs.mp

Führen Sie dann diesen Befehl aus:

cagefsctl --remount-all
sMyles
quelle
1
Freut mich
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 .

[mysqld]
datadir=/your/new/dir/
tmpdir=/your/new/temp/

Sie müssen die Datenbank kopieren, wenn der Server nicht ausgeführt wird .

RageZ
quelle
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

# /etc/init.d/mysql restart
H6.
quelle
5
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!

Sirac
quelle
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.

wfbarksdale
quelle
1
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
user3338098
5

Stoppen Sie zuerst mysqld

mysql_install_db --user=mysql \
                 --basedir=/opt/mysql/mysql \
                 --datadir=/opt/mysql/mysql/data

Ä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

Murlo
quelle
4

Stoppen Sie zuerst Ihr MySQL

sudo service mysql stop

Kopieren Sie MySQL-Daten an den neuen Speicherort.

sudo cp -rp /var/lib/mysql /yourdirectory/

Wenn Sie Apparmor verwenden, bearbeiten Sie die folgende Datei und gehen Sie wie folgt vor

sudo vim /etc/apparmor.d/usr.sbin.mysqld

Ersetzen Sie wo / var / lib / durch / yourdirectory / und fügen Sie das Folgende hinzu, falls der Datei keine vorhanden ist

    /yourdirectory/mysql/ r,
    /yourdirectory/mysql/** rwk,

Speichern Sie die Datei mit dem Befehl

:wq

Bearbeiten Sie die Datei my.cnf

sudo vim /etc/mysql/my.cnf

Ersetzen Sie wo / var / lib / durch / yourdirectory / und speichern Sie dann mit dem Befehl

:wq

Starten Sie endlich MySQL

sudo service mysql start

@sehe mehr über raid0, Optimierung ici

Naddame
quelle
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

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.

rauben
quelle
2

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 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!).
Pavel
quelle
1

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...

  1. Stoppen Sie MySQL. Befolgen Sie dazu die obigen Anweisungen.
  2. 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.
  3. Korrigieren Sie die Berechtigungen in den kopierten Datenbankverzeichnissen. Eigentümer sollte MySQL sein: MySQL, Verzeichnisse sollten 700 sein und Dateien sollten 660 sein.
  4. Starten Sie MySQL neu. Abhängig von Ihrer Installation sollten DB-Dateien der alten Version aktualisiert werden.
K Markey
quelle
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.

mkdir -p /home/mysql
chmod 755 /home/mysql
chown mysql:mysql /home/mysql

Stoppen Sie MySQL, wenn Sie ausgeführt werden.

systemctl stop mysql

Verschieben Sie das Datenverzeichnis.

mv -f /var/lib/mysql/* /home/mysql

Erstellen Sie ein permanentes Mount und führen Sie es aus.

echo "/home/mysql /var/lib/mysql none    bind   0 0" >> /etc/fstab
mount -a

Starten Sie den Server neu.

systemctl start mysql
TomS
quelle
1

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

Verfügbar im Docker Hub hier: https://hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/

Richard
quelle
1

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 (80 is for 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 to Start again, 
 "MySQL80" that you stopped, to restart it again.

Schritt - 5 : Fertig! Jetzt mach dich wieder an die Arbeit !!

Prem KTiw
quelle
1
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

  1. hör auf mysql
  2. Ändern Sie die MySQL-Daten in ein neues Verzeichnis
  3. Ändern Sie die Konfigurationsdatei
  4. Laden Sie die Konfigurationsdatei neu
  5. 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

wo ist mysql

42wolf
quelle
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

Ich habe mysql neu gestartet:

# systemctl restart mysql.service

aber vermute, dass auch das nicht nötig war.

user3346151
quelle
0

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

Santosh Tiwary
quelle
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.

user3325137William
quelle
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

Starten Sie MySQL neu.

Maciek Rek
quelle
-1

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

Tanxiuguang
quelle
Wie hier beschrieben, ist serverfault.com/questions/503887/… selinux nicht schuld. Es gibt ein anderes Problem, das die Änderung der datadirEigenschaft verhindert
user3338098