安装外部驱动器后如何在启动时启动 mariaDB

how to start mariaDB on boot after external drive is mounted

我正在使用 raspberry pi 3,操作系统为 OSMC 以及 Debian Stretch 和 nginx,并按照我不久前在某处找到的一些说明手动安装了 mariaDB 10.2。

我已将 mariadb 的数据目录更改为 /media/USBHDD2/shared/mysql

当我启动或重新启动时,pi、mariaDB 无法启动。以前,当我有默认的 datadir = /var/lib/mysql 时一切都很好。改回来就好了

但是,如果我登录到控制台,我可以使用

成功启动它
service mysql start

请注意,我使用的是 'service' 而不是 'systemctl' - 后者不起作用。文件 mariadb.service 和 mysql.service 在任何地方都不存在。

在 /etc/init.d 中我找到两个文件:mysql 和 myswql,它们似乎是相同的。如果我从目录中删除 myswql,mariadb 根本不会启动。我曾尝试通过在开头放置一个 sleep 15 来编辑它们,但无济于事。我已经阅读了各种关于尝试测试是否安装了 USBHDD2 的解决方案,例如使用

while ! test -f /media/USBHDD2/shared/test.txt
do
  sleep 1
done

我在 /etc/init.d/mysql 和 myswql 文件中尝试过,也在调用 mysql 开始之前在 rc.local 中尝试过。 但这也不管用。

我还将 rc?.d 中的链接重命名为 S99mysql 所以在其他一切之后开始,仍然没有快乐。

我花了整整两天的时间来解决这个问题。我需要做什么才能使它正常工作,以便 mysql 在启动时启动?

文件系统为ntfs

ls -la //media/USBHDD2/shared/mysql的输出如下:

total 176481
drwxrwxrwx 1 root root     4096 Mar 27 11:41 .
drwxrwxrwx 1 root root     4096 Mar 27 13:06 ..
-rwxrwxrwx 1 root root    16384 Mar 27 11:41 aria_log.00000001
-rwxrwxrwx 1 root root       52 Mar 27 11:41 aria_log_control
-rwxrwxrwx 1 root root        0 Nov  3  2016 debian-10.1.flag
-rwxrwxrwx 1 root root    12697 Mar 27 11:41 ib_buffer_pool
-rwxrwxrwx 1 root root 50331648 Mar 27 11:41 ib_logfile0
-rwxrwxrwx 1 root root 50331648 Mar 26 22:02 ib_logfile1
-rwxrwxrwx 1 root root 79691776 Mar 27 11:41 ibdata1
drwxrwxrwx 1 root root    32768 Mar 25 18:37 montegov_admin
-rwxrwxrwx 1 root root        0 Nov  3  2016 multi-master.info
drwxrwxrwx 1 root root    20480 Sep  3  2019 mysql
drwxrwxrwx 1 root root        0 Sep  3  2019 performance_schema
drwxrwxrwx 1 root root    86016 Mar 25 20:06 rentmaxpro_wp187
drwxrwxrwx 1 root root        0 Sep  3  2019 test
drwxrwxrwx 1 root root    32768 Nov  3  2016 trustedhomerenta_admin
drwxrwxrwx 1 root root    32768 Nov  3  2016 trustedhomerenta_demo
drwxrwxrwx 1 root root    40960 Mar 25 21:05 trustedhomerenta_meta
drwxrwxrwx 1 root root    36864 Mar 25 21:25 trustedhomerenta_montego
drwxrwxrwx 1 root root    36864 Mar 26 20:37 trustedhomerenta_testmontego

问题是外部驱动器配置为 ntfs。

Mysql 要求文件和目录由 mysql:mysql 所有,但由于 ntfs 没有与 linux 相同的所有者和组系统,linux 安装过程在安装驱动器时将自己的所有者和组分配给文件结构。默认情况下这最终是 root:root 所以 mysql 不能使用它们。

ntfs 不允许 CHOWN 工作,因此无法更改 root 的所有权。

一种解决方法是备份所有文件,重新分区为EXT4,然后恢复所有文件。

我最终使用的解决方案是在挂载驱动器时将mysql指定为所有者和组。因此我的 /etc/fstab 文件被更改为:

ID=C2CA68D9CA68CB6D /media/USBHDD2 ntfs users,exec,uid=mysql,gid=mysql 0 2

现在 mysql 可以在启动时正常启动。

呸 ;-)

感谢@danblack 让我朝着正确的方向思考