2017-07-06 1 views
1

Hintergrundinfo:MariaDB konnte nicht gestartet werden nach Änderung von Datenverzeichnis

Ich ließ das CentOS 7-Installationsprogramm automatisch partitionieren.

Filesystem    Size Used Avail Use% Mounted on 
/dev/mapper/centos-root 50G 43G 7.9G 85%/
devtmpfs     32G  0 32G 0% /dev 
tmpfs      32G  0 32G 0% /dev/shm 
tmpfs      32G 9.3M 32G 1% /run 
tmpfs      32G  0 32G 0% /sys/fs/cgroup 
/dev/sda1    492M 123M 369M 25% /boot 
/dev/mapper/centos-home 476G 54G 422G 12% /home 
tmpfs     6.3G  0 6.3G 0% /run/user/1000 
tmpfs     6.3G  0 6.3G 0% /run/user/0 

Aber ich hatte nicht erwartet, nicht die meisten der Speicherplatz geht an das Verzeichnis/root, und MariaDB ist jetzt 35GB in/var/lib/mysql bald nicht mehr genug Speicherplatz.

So änderte ich den datadir, unten durch Befehle, scheiterte aber dann

systemctl stop mariadb 
cp -fR /var/lib/mysql /home/ 
chown -R mysql:mysql /home/mysql 

vi /etc/my.cnf.d/server.cnf und fügte hinzu, die folgende Zeile

[mysqld] 
datadir=/home/mysql 
zu starten

systemctl MariaDB

starten, aber es scheiterte und konform zu

"Can not Testdatei erstellen"
Jul 06 22:32:26 ging2 systemd[1]: Starting MariaDB database server... 
Jul 06 22:32:26 ging2 mysqld[9450]: 2017-07-06 22:32:26 140114825693312 [Note] options --log-slow-admin-statements, --log-queries-not-us...s not set 
Jul 06 22:32:26 ging2 mysqld[9450]: 2017-07-06 22:32:26 140114825693312 [Note] /usr/sbin/mysqld (mysqld 10.2.5-MariaDB) starting as process 9450 ... 
Jul 06 22:32:26 ging2 mysqld[9450]: 2017-07-06 22:32:26 140114825693312 [Warning] Can't create test file /home/mysql/ging2.lower-test 
Jul 06 22:32:26 ging2 mysqld[9450]: [87B blob data] 
Jul 06 22:32:26 ging2 mysqld[9450]: 2017-07-06 22:32:26 140114825693312 [ERROR] Aborting 

Ich habe keine Ahnung, warum es nicht funktioniert und ich denke, die Berechtigungen und das Eigentum sind die gleichen wie die alten Datadir.

Ich denke einige von euch wissen warum. Könnte also bitte jemand helfen?

Danke !!

+1

Zunächst einmal versuchen, SELinux zu deaktivieren und sehen, ob es hilft. – elenst

+0

Ich habe versucht, es hilft nicht – kchkg

+0

Ich kann erstellen oder init eine neue DB in/var/lib /, aber nicht/home/xxxx – kchkg

Antwort

1

Das traf mich gerade bei einem Debian 8 -> 9 Upgrade. Ich konnte MariaDB nicht für mein Datadir unter/home starten lassen, egal was ich versuchte.

Alle Antworten, die ich finden konnte, verwiesen auf die Änderung von AppArmor oder SELinux, aber keiner von denen wurde installiert.

Das Problem ist tatsächlich Systemd, die eine Sicherheitsrichtlinie in der MariaDB-Startup-Datei hat, die es daran hindert,/home zu verwenden!

Die systemd Servicedatei (/lib/systemd/system/mariadb.service auf Debian) enthält die Einstellung: ProtectHome = true. Diese Einstellung verhindert, dass MySQL in einen beliebigen Ordner unter/home schreibt, und daher wird Fehler Nr. 13: Zugriff verweigert beim Start ausgelöst.

Die Lösung ist entweder die datadir aus/home verschieben oder sonst diese Sicherheitsfunktion in der systemd Service-Datei zu deaktivieren:

ich es wie folgt festgesetzt:

1: sudo cp /lib/systemd/system/mariadb.service/etc/systemd/system/ # machen eine lokale Überschreibung der Servicedatei

2: bearbeiten /etc/systemd/system/mariadb.service und ändern ProtectHome zu falsch sein (ProtectHome = fal se).Speichern Sie die Datei

3: sudo systemd daemon-nachladen # die systemd Dienste aktualisieren, so dass es die Dateien überschreiben sieht

4: sudo systemctl mysql

beginnen ... und es sollte endlich Anfang!!!

Sie müssen auch mit AppArmor und SELinux arbeiten, wenn diese installiert sind, beide verhindern auch eine Änderung des MySQL-Datenverzeichnisses.

Verwandte Themen