安装外部驱动器后如何在启动时启动 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 让我朝着正确的方向思考
我正在使用 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 让我朝着正确的方向思考