Starten Sie den MySQL/MariaDB-Dienst nach der Änderung des Datenverzeichnisses

Starten Sie den MySQL/MariaDB-Dienst nach der Änderung des Datenverzeichnisses

Ich habe den MariaDB-Server installiert und einen Root-Benutzer mit einem Passwort erstellt mit

sudo apt install mariadb-server
sudo mysql_secure_installation

Da ich einen Rasperri Pi verwende möchte ich die DB auf eine externe Festplatte auslagern. Dazu habe ichdieses Tutorial

Nachdem ich die cnf-Dateien geändert habe (alle unter /etc/mysql/mariadb.conf/ und auch die debian.cnf-Datei unter /etc/mysql), schlägt das Starten des MySQL-Dienstes fehl:

 $ sudo service mysql start
Job for mariadb.service failed because the control process exited with error code.
See "systemctl status mariadb.service" and "journalctl -xe" for details.

Im Protokoll steht, dass keine Testdatei erstellt werden konnte:

$systemctl status mariadb.service
Okt 30 22:56:31 raspberrypitouch systemd[1]: Starting MariaDB 10.3.31 database server...
Okt 30 22:56:31 raspberrypitouch mysqld[4694]: 2021-10-30 22:56:31 0 [Note] /usr/sbin/mysqld (mysqld 10.3.31-MariaDB-0+deb10u1) starting as process 4694 ...
Okt 30 22:56:31 raspberrypitouch mysqld[4694]: 2021-10-30 22:56:31 0 [Warning] Can't create test file /media/pi/DBDRIVE/MariaDB/raspberrypitouch.lower-test
Okt 30 22:56:31 raspberrypitouch mysqld[4694]: [101B blob data]
Okt 30 22:56:31 raspberrypitouch mysqld[4694]: 2021-10-30 22:56:31 0 [ERROR] Aborting
Okt 30 22:56:31 raspberrypitouch systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
Okt 30 22:56:31 raspberrypitouch systemd[1]: mariadb.service: Failed with result 'exit-code'.
Okt 30 22:56:31 raspberrypitouch systemd[1]: Failed to start MariaDB 10.3.31 database server.

nach ausführlicher Suche habe ich folgende mögliche Ursachen gefunden und ausgeschlossen:

  1. RüstungUndSELinuxblockieren den Zugriff auf das neue Verzeichnis -> sie sind nicht installiert

    getenforce
    -bash: getenforce: command not found
    

    Und

    aa-status
    
    -bash: aa-status: command not found
    
  2. Tippfehler

    Ich habe alle Pfade kopiert und ein Tippfehler wäre ein wirklich schlechter Grund, zwei Tage beschäftigt zu sein

  3. Fehlen Berechtigungen

    Ich habe das hier kopiert, daher sollten die Berechtigungen korrekt sein:cp -R -p /var/lib/mysql/* /media/pi/DBDRIVE/MariaDB/

    übergeordneter Ordner

    /media/pi/DBDRIVE $ ls -l
    total 20
    drwx------ 2 mysql mysql 16384 Oct 29 12:25 lost+found
    drwxrwxrwx 6 mysql mysql  4096 Oct 30 23:07 MariaDB
    

    der db-Ordner selbst

    /media/pi/DBDRIVE/MariaDB $ ls -l
    
    total 110632
    
    -rw-rw---- 1 mysql mysql    16384 Oct 30 15:30 aria_log.00000001
    -rw-rw---- 1 mysql mysql       52 Oct 30 15:30 aria_log_control
    -rw-r--r-- 1 root  root         0 Oct 30 13:02 debian-10.3.flag
    -rw-rw---- 1 mysql mysql      976 Oct 30 15:30 ib_buffer_pool
    -rw-rw---- 1 mysql mysql 12582912 Oct 30 15:30 ibdata1
    -rw-rw---- 1 mysql mysql 50331648 Oct 30 15:30 ib_logfile0
    -rw-rw---- 1 mysql mysql 50331648 Oct 30 13:02 ib_logfile1
    -rw-rw---- 1 mysql mysql        0 Oct 30 13:02 multi-master.info
    drwx------ 2 mysql mysql     4096 Oct 30 13:02 mysql
    drwxrwxrwx 2 mysql mysql     4096 Oct 30 17:50 mysqld
    drwx------ 2 mysql mysql     4096 Oct 30 13:02 performance_schema
    drwx------ 2 mysql mysql     4096 Oct 30 15:12 testDB
    

    die Fahrt

    /media/pi/DBDRIVE $ ls -l
    total 20
    drwx------ 2 mysql mysql 16384 Oct 29 12:25 lost+found
    drwxrwxrwx 7 mysql mysql  4096 Oct 30 23:58 MariaDB
    

    Pi

    /media/pi $ ls -l
    total 4
    drwxr-xr-x 4 mysql mysql 4096 Oct 30 16:53 DBDRIVE
    

    Medien

    /media $ ls -l
    total 4
    drwxr-x---+ 3 root root 4096 Oct 31 01:42 pi
    
  4. falsches Format für externes Laufwerk

    df -Th
    Filesystem     Type      Size  Used Avail Use% Mounted on
    
    /dev/root      ext4       29G  3.8G   25G  14% /
    devtmpfs       devtmpfs  776M     0  776M   0% /dev
    tmpfs          tmpfs     937M     0  937M   0% /dev/shm
    tmpfs          tmpfs     937M  8.6M  928M   1% /run
    tmpfs          tmpfs     5.0M  4.0K  5.0M   1% /run/lock
    tmpfs          tmpfs     937M     0  937M   0% /sys/fs/cgroup
    /dev/mmcblk0p1 vfat      253M   49M  204M  20% /boot
    tmpfs          tmpfs     188M  4.0K  188M   1% /run/user/1000
    /dev/sda       ext4      916G  186M  870G   1% /media/pi/DBDRIVE
    
  5. Fehler in einem cnf-Datei

    Hierist im Grunde der gleiche Fall, aber die Lösung funktioniert bei mir nicht

Jeder Hinweis in die richtige Richtung ist willkommen

Warum kann ich den Dienst nicht starten?

Antwort1

Wie in den Kommentaren erwähnt, konnte das Problem manuell durch Ausführen von reproduziert werden sudo -u mysql touch /media/pi/DBDRIVE/MariaDB/raspberrypitouch.lower-test. Dies führte zu einem „Zugriff verweigert“-Fehler.

Da die Frage zeigt, dass das Verzeichnis „MariaDB“ vollständig dem Benutzer „mysql“ gehört, liegt das Problem höchstwahrscheinlich bei einem der übergeordneten Verzeichnisse – „/media“, „/media/pi“ und „/media/pi/DBDRIVE“. Diese Verzeichnisse benötigen mindestens Ausführungsberechtigungen (für alle Benutzer), damit der Benutzer „mysql“ auf das Verzeichnis „/media/pi/DBDRIVE/MariaDB/“ zugreifen kann.

OP hat bestätigt, dass dem /media-Verzeichnis die erforderlichen Berechtigungen fehlten und dass das Hinzufügen dieser Berechtigungen das Problem behoben hat.

Verwandter Hinweis aus der MariaDB-Wissensdatenbank:https://mariadb.com/kb/en/was-tun-wenn-mariadb-nicht-startet/#kann-keine-testdatei-erstellen

verwandte Informationen