Ubuntu 16.04下MySQL 5.7.18取消开机启动(解决无法使用Sysvinit(update-rc.d/sysv-rc-conf)脚本关闭)

时间:2021-12-26 19:21:01

首先了解以下运行级别对应工具的变化历史:

1、Ubuntu 6.10及以前版本使用Sysvinit。

2、Ubuntu 14.10及以前版本使用Upstart但是还留着Sysvinit并存。

https://wiki.ubuntu.com/Upstart

https://help.ubuntu.com/community/UpstartHowto

3、Ubuntu 15.04开始预设使用Systemd,但是可以在开机选项选择使用Systemd或Upstart,但是不可同時使用Sysvinit或Upstart并存。

https://wiki.ubuntu.com/SystemdForUpstartUsers

下面是分析:

从11.04版起,我想。MySQL由Upstart进行处理,而Apache仍然使用传统的Sysvinit脚本。

对于MySQL,可以使用Upstart中的新的覆盖功能来修改启动行为:

echo "manual" | sudo tee /etc/init/mysql.override

有关更多信息,请参阅Upstart Cookbook中的“ 禁止自动启动作业 ” 一节。

而在16.04版本上,由于使用了Systemd进行接管,以上脚本无法使用,那么需要使用以下脚本来禁止才能通过:

#禁止启动
sudo systemctl disable mysql
#开机启动
sudo systemctl enable mysql

所以,我猜测,MySQL现在整体由Systemd进行处理,但是这仅限于以APT源和deb文件安装的版本,而对于以二进制包(tar.gz压缩包)安装的版本,然仍使用Sysvinit脚本进行控制。

对于Systemd来说,服务在运行级别上简化很多,不用关心运行在哪个运行级别上。默认已经帮你配置好。

对于Apache的分析:

由于Apache仍然使用传统的Sysvinit脚本,可以使用它

sudo update-rc.d -f apache2 remove

从中删除链接/etc/rcX.d或替代使用

sudo update-rc.d apache2 disable

它通过将脚本从起始脚本更改为停止脚本来“禁用”脚本。这是可逆的

sudo update-rc.d apache2 enable

而对于Sysvinit脚本的操作,对应的工具就是sysv-rc-conf。

参考:

https://askubuntu.com/questions/40072/how-to-stop-apache2-mysql-from-starting-automatically-as-computer-starts

https://askubuntu.com/questions/833094/how-can-i-disable-autostart-of-mysql-server

https://askubuntu.com/questions/57381/how-to-stop-mysql-from-running-at-boot-time

https://askubuntu.com/questions/40072/how-to-stop-apache2-mysql-from-starting-automatically-as-computer-starts/40077#40077