標籤:命令列 password 分享 ice 運行 basedir tar space 沒有
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/mysqlcp /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註冊為系統服務。
service: no such service mysqld 與MySQL的開啟,關閉和重啟