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:
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
-
He copiado todas las rutas y un error tipográfico sería una muy mala razón para estar ocupado durante dos días.
-
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
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
-
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