iniciar el servicio mysql/mariaDB después del cambio de datadir

iniciar el servicio mysql/mariaDB después del cambio de datadir

Instalé el servidor mariadb y creé un usuario root con una contraseña con

sudo apt install mariadb-server
sudo mysql_secure_installation

Como uso un Rasperri Pi, quiero cambiar la base de datos a un disco duro externo. Para esto he tomadoeste tutorial

Después de cambiar los archivos cnf (todos en /etc/mysql/mariadb.conf/ y también el archivo debian.cnf en /etc/mysql), el inicio del servicio mysql falla:

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

El registro dice que no se pudo crear un archivo de prueba:

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

Después de una búsqueda exhaustiva, encontré y descarté las siguientes posibles causas:

  1. armaduraySELinuxestán bloqueando el acceso al nuevo directorio -> no están instalados

    getenforce
    -bash: getenforce: command not found
    

    y

    aa-status
    
    -bash: aa-status: command not found
    
  2. error de tipografía

    He copiado todas las rutas y un error tipográfico sería una muy mala razón para estar ocupado durante dos días.

  3. Desaparecido permisos

    He copiado con esto, por lo que los permisos deberían ser correctos:cp -R -p /var/lib/mysql/* /media/pi/DBDRIVE/MariaDB/

    carpeta principal

    /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
    

    la carpeta db en sí

    /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
    

    el disco

    /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
    

    medios de comunicación

    /media $ ls -l
    total 4
    drwxr-x---+ 3 root root 4096 Oct 31 01:42 pi
    
  4. Formato erróneo para disco externo

    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. error en un archivo cnf

    aquíes basicamente el mismo caso pero la solucion no me funciona

Se agradece cada pista en la dirección correcta.

¿Por qué no puedo iniciar el servicio?

Respuesta1

Como se señaló en los comentarios, el problema se podía reproducir manualmente ejecutando sudo -u mysql touch /media/pi/DBDRIVE/MariaDB/raspberrypitouch.lower-test. Esto resultó en un error de "permiso denegado".

Dado que la pregunta muestra que el directorio 'MariaDB' es propiedad exclusiva del usuario 'mysql', lo más probable es que el problema esté en uno de los directorios principales: '/media', '/media/pi' y '/media/ pi/DBDRIVE'. Estos directorios necesitan al menos permisos de ejecución (para todos los usuarios) para que el usuario 'mysql' pueda acceder al directorio '/media/pi/DBDRIVE/MariaDB/'.

OP ha confirmado que al directorio /media le faltaban los permisos necesarios y que agregarlos solucionó el problema.

Nota relacionada de la base de conocimiento MariaDB:https://mariadb.com/kb/en/qué-hacer-si-mariadb-doesnt-start/#cant-create-test-file

información relacionada