2012/06/08

取消 Ubuntu 上 MySQL 的開機自動啟動

由於小筆電跑很慢、記憶體也不多,想說 Apache 和 MySQL 都取消開機自動啟動,有需要在手動執行,便把 /etc/init.d 底下二個 script 砍刪除:
$ cd /etc/init.d/
$ rm apache2 mysql

重新啟動後,Apache 沒有啟動,但是 MySQL 卻活的好好的!

執行 /etc/init.d/mysql stop 後才注意到提示訊息,MySQL 必須使用 service 來控制啟動與停止:
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mysql
mysql start/running, process 2035

service 似乎只能控制啟動或是停止服務,並沒有辦法修改開機啟動設定,問了男人以後看到「see also」有個 update-rc.d,男人說是用來設定不同 run-level 底下服務是否啟動。

印象中 Ubuntu 沒有 run-level 這東西吧,不過試試也無妨:
$ update-rc.d mysql disable 2 3 4 5    # /etc/init.d/mysql missing LSB information
$ update-rc.d -f mysql remove   # Nothing special

重新開機,還是看到 MySQL 在對我微笑 ......

找了 chkconfig、sysv-rc-conf 來看到底是自己代賽還是哪裡出錯,不過確實看到 MySQL 在 run-level 2 3 4 5 下都是關著的,開機仍舊會自動啟動。

Linux 上 everything is a file,不會用工具至少還可以改設定檔內容,用 find 和 grep 把 /etc 底下所有和 mysql  有關的檔案都掃了一遍,發現 /etc/init (不是 init.d) 下還有個 mysql.conf,而且把這個設定檔砍掉以後 service 就無法辨識服務。

開啟 /etc/init/mysql.conf,前面有幾行,註解掉以後開機就不會自動啟動 MySQL 了:
start on (net-device-up
          and local-filesystems
          and runlevel [2345])
stop on runlevel [016]


Ref:
Disable autostart from mysql
http://ubuntu.5.n6.nabble.com/Disable-autostart-from-mysql-td1537743.html



ps. 太久沒寫文章,手感都沒了 QQ

2 則留言:

  1. "converted to an Upstart job"
    疑Upstart script在/etc/init
    直接sudo rm /etc/init/mysql.conf 就好?

    回覆刪除
  2. 刪除 /etc/init/mysql.conf 也可以取消自動啟動

    但這樣之後就沒有辦法透過 service 啟動 MySQL

    回覆刪除