Init.d的作用以及如何配置服務自啟動(mysql踩坑集錦)
我用的第三種方法安裝的,這些坑困住了我2天,真心煩,好在都解決了。
坑1:第一個錯誤應該是報的 mysqld: Can't create directory '/usr/local/mysql/data/'
這問題是我自己把mysql目錄裝在了別的目錄,沒有安裝在/usr/local下面,他完全認不出來了,更不會自己建立。
另外這個data資料夾如果沒有的話,需要你自己手動建立。
坑2:是我自己的基礎問題
以上錯誤都是由於我不理解init.d的作用,這些服務的名字根本不存在自然無法找不到,也無法執行。
簡單來說它裡面放的是一些系統級別的指令碼(服務),需要root許可權去執行。
所以我們需要把mysql.server的指令碼複製過來,順便改名叫mysqld。
#複製服務檔案到/etc/init.d sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
然後就可以使用此命令啟動/關閉 mysql:
/etc/init.d/mysqld start
/etc/init.d/mysqld stop
但是下面這種方式更方便,也是我們把指令碼放到Init.d的目的:
service mysqld start|stop
解釋下mysqld:它就是服務端的守護程式,你可以把它理解為服務端。
所以我們才把mysql.server這個指令碼改成mysqld的名字,其實一個意思。
而mysql就是指命令列工具,可以理解為一個客戶端。
最後,既然是系統級的服務,必然要配置自啟動,有兩種方法:
第一種.圖形化介面的sysv-rc-conf,用起來很方便。
安裝sysv-rc-conf
sudo apt-get install sysv-rc-conf
啟動sysv-rc-conf
sudo sysv-rc-conf
按空格鍵出現X,然後按Q退出。重啟即可。
執行級別說明:S表示開機後就會執行的服務0表示關機 6表示重啟 1表示單使用者模式2-5表示多使用者模式 。
第二種方式:也挺簡單
/etc/rc.local
在這個指令碼中,把手動啟動的命令敲進去,它幫你開機自動執行。