1.問題原因與解決辦法
因為修改了MySQL臨時文件的目錄后,使用service mysqld restart
重啟MySQL出現如下錯誤:
service: no such service mysqld
錯誤原因:
是因為我們在編譯安裝MySQL時沒有將MySQL的控制腳本mysql.server拷貝到/etc/init.d/中。
解決辦法:
將MySQL的安裝目錄下的support-files/mysql.server拷貝到/etc/init.d/中,並重命名為mysqld。拷貝命令如下:
#我的mysql安裝路徑是:/usr/local/mysql cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
2.service命令的工作原理
service命令,顧名思義,就是用於管理Linux操作系統中服務的命令。可以用來啟動、關閉和重新啟動系統服務,還可以顯示所有系統服務的當前狀態。
但是,能夠使用service命令進行操作的,就是已經注冊成為linux的系統服務了。window中也可以注冊成為系統服務。那么如何注冊成為系統服務呢?
比如從網上下載一個新的軟件,安裝到linux上面去。想注冊成系統服務,我需要自己編寫一個shell服務腳本文件才行。這個服務腳本文件如何編寫呢?如果不了解servcie命令的機制,會漏掉一些東西了。比如我之前下載的sphinx安裝到服務器后。我想使用”service sphinx start”這樣的簡短命令來管理,就必須注冊成為系統服務,而有些軟件的源碼包中是沒有提供寫好的腳本的,有時必須自己寫一個。但是,幸好MySQL自帶了服務腳本可供service命令調用,也就是上面的mysql.server這個腳本,我們要做的就是將MySQL的服務腳本拷貝到/ect/init.d/目錄下,並重命名為mysqld。
與service相關的chkconfig命令的作用?
service命令可以快速地開啟和停止linux中的服務程序,這在調試過程中非常有用chkconfig命令可以快速地設置開機時需要自動啟動的服務程序。
這兩個命令的功能都可以通過其他方法實現,只不過有了它們之后更加方便,維護工作可以更加輕松。
chkconfig命令的用法不再贅述!網上自行查閱!
3./ect/init.d/目錄存放的是什么
在Linux中,/etc/init.d 和 /etc/rc.d/init.d這兩個目錄,都是用來放服務腳本的,這兩個目錄一般不會同時存在,因為功能是一樣的。當Linux啟動時,會根據chkconfig命令設置run level來確定是否啟動相應的程序,如果啟動的話就回去尋找這些目錄中的服務腳本,並啟動相應的程序。
4.不使用service如何開啟,關閉,重啟mysql
如果沒有將mysql注冊為系統服務,那么我們可以使用MySQL為我們提供的一些工具來開啟,關閉,重啟mysql。當然,mysql服務腳本對mysql的操作也是調用這些工具來完成的。這些工具都在mysql的安裝目錄的bin目錄中。貼個圖:
如果我們按照上面的操作將mysql注冊為系統服務的話,使用service來開啟,關閉,重啟mysql非常方便,命令如下:
#重啟 service mysqld restart #開啟 service mysqld start #關閉 service mysqld stop
或者執行運行服務腳本mysqld或者mysql.server:
#啟動 /etc/inint.d/mysqld start #關閉 /etc/inint.d/mysqld stop #重啟 /etc/inint.d/mysqld restart
不使用service如何開啟,關閉,重啟mysql,也就意味這不使用mysql為我們提供的服務腳本mysql.server來管理mysql的開啟和關閉。但我們可以使用如下工具來完成。
開啟mysql:
/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --log-error=/usr/local/mysql/data/Tencent_IM.err --pid-file=/usr/local/mysql/data/Tencent_IM.pid --socket=/tmp/mysql.sock --port=3306
有點長,上面是我黏貼正在運行的mysql進程,大家也可以在關閉mysql之前使用ps查看,並復制一下。
或者使用mysqld_safe來啟動mysql:
mysqld_safe --user=mysql &
關閉mysql:
mysqladmin -u[username] -p[password] shutdown
重啟mysql:
查看mysql的服務腳本mysql.server或者mysqld,我發現重啟mysql也是先關閉,再啟動。所以沒有直接重啟的命令,還是乖乖的先關閉,再啟動吧!
當然,利用mysql提供的工具來控制mysql的開啟和關閉,應該還有其它的方法,我目前還不要太清楚,有知道的請留言告知,萬分感謝!
5.mysql和mysqld的區別
mysqld(mysql deamon)是服務端程序,是mysql提供服務的主要程序,提供服務的還有很多其它的程序,見mysql安裝目錄的bin目錄。
mysql是命令行客戶端程序,用於執行sql語句!
還要注意一點,我們習慣把mysql的服務腳本mysql.server更名為mysqld放在/etc/init.d/目錄下,將mysql注冊為系統服務。