MySQL數據庫的啟動與終止

由於MySQL服務器具有多種安裝分發,而且能夠運行在多種操作平臺之上,因此它的啟動與停止的方法也多種多樣。你可以根據實際情況使用其中的一種。在你安裝、升級或者維護系統時,你可能需要多次啟動和終止服務器,你需要瞭解啟動和終止服務器的方方面面。


直接運行守護程序


1、你可以采用的方法


一般的,你可以有以下幾種選擇啟動MySQL服務器,它們的功能和用法幾乎是相同的,所以一起在這裡介紹:


直接使用MySQL守護程序mysqld啟動數據庫系統,尤其是Win32平臺上的分發,這是因為,在Win32平臺上沒有mysql.server等服務器腳本可用。


通過調用safe_mysqld腳本,它接受與mysqld相同的參數,並試圖為mysqld決定正確的選項,然後選擇用那些運行它。


2、腳本或者守護程序的存放位置


對於二進制分發的安裝,mysqld守護程序安裝在MySQL安裝目錄的bin目錄下,或者可在MySQL源代碼分發的libexec目錄下找到,缺省為/usr/local/libexec/。對於rpm分發,mysqld應該位於PATH變量決定的程序搜索路徑中,因此可以直接引用。


safe_mysqld仍舊是一個腳本,並且隻存在於Unix平臺的分發中。safe_mysqld腳本安裝在MySQL安裝目錄的bin目錄下,或可在MySQL源代碼分發的scripts目錄下找到。對於rpm分發,該腳本應該位於PATH變量決定的程序搜索路徑中,因此可以直接引用。


3、為什麼要使用safe_mysqld腳本


safe_mysqld接受和mysqld同樣的參數,並試圖確定服務器程序和數據庫目錄的位置,然後利用這些位置調用服務器。 safe_mysqld將服務器的標準錯誤輸出重定向到數據庫目錄中的錯誤文件中,並以記錄的形式存在。啟動服務器後,safe_mysqld還監控服務器,並在其死機時重新啟動。safe_mysqld通常用於Unix的BSD風格的版本。


如果,你曾經為root或在系統啟動程序中啟動safe_mysqld,其錯誤日志將有root擁有。如果再用非特權的用戶身份調用safe_mysqld,則可能引起“Access Denied”(即,“所有權被拒絕”)的錯誤。此時可以刪除錯誤文件在試一次。


由於safe_mysqld腳本的功能,使用safe_mysqld腳本明顯比直接啟動mysqld守護程序來得有效。


4、啟動服務器的完整過程


對於Unix平臺上的分發,如果你以root或在系統引導期間啟動sqfe_mysqld,出錯日志由root擁有,這可能在你以後試圖用一個非特權用戶調用safe_mysqld時將導致“permission denied”(權限拒絕)錯誤,刪除出錯日志再試一下。因此建議你在啟動服務器前,首先切換到一個專門的用戶mysql。


具體方法如下:


Unix平臺


$ su mysql


$ safe_mysql & (或者 mysqld & ,不推薦)


Win32平臺


C: mysqlin>mysqld –standalone


或者C: mysqlin>mysqld-nt –standalone


如果你使用mysqld並且沒有把mysql安裝在標準的位置,通常需要提供—basedir選項你的數據庫的安裝位置。


$safe_mysqld –basedir=”/path/to/mysql” &(Unix平臺)


c:mysqlin>mysqld –basedir=”x:/path/to/mysql” (Win32平臺)


5、使用safe_mysqld腳本實現服務器的自動啟動


同樣你可以利用safe_mysqld和mysqld實現服務器隨操作系統自動啟動。對於Linux系統以及BSD風格的系統(FreeBSD,OpenBSD等)),通常在/etc目錄下有幾個文件在引導時初始化服務,這些文件通常有以“rc”開頭的名字,且它有可能由一個名為“rc.local”的文件(或類似的東西),特意用於啟動本地安裝的服務。


在這樣的系統上,你可能將類似於下列的行加入rc.local文件中以啟動服務器(如果safe_mysqld的目錄在你的系統上不同,修改它即可):


if [ -x /usr/local/bin/safe_mysqld ]; then /usr/local/bin/safe_mysqld & fi


由於這樣在引導時啟動,將使用root身份啟動數據庫,在某些時候可能會產生問題和麻煩。這是你可以指定–user選項,因此可以將上面的代碼修改為:


if [ -x /usr/local/bin/safe_mysqld ]; then


/usr/local/bin/safe_mysqld –user=mysql –datadir=/path/to/data  &


fi


使用腳本mysql.server啟動關閉數據庫


對於Unix平臺上的分發,比較好的辦法是使用數據庫腳本mysql.server,啟動和關閉數據庫。


1、mysql.server腳本的存放位置


mysql.server腳本安裝在MySQL安裝目錄下的share/mysqld目錄下或可以在MySQL源代碼分發的 support_files目錄下找到。對於rpm分發,該腳本已經改名mysql位於/etc/rc.d/init.d目錄中,另外在….中存在一個副本mysql.server。下文的討論對RPM分發來說,都在安裝中完成瞭。如果你想使用它們,你需要將它們拷貝到適當的目錄下。


2、如何使用mysql.server腳本啟動停止服務器


mysql.server腳本可以被用來啟動或停止服務器,通過用start或stop參數調用它:


$ mysql.server start


$ mysql.server stop


3、mysql.server的功能簡述


在mysql.server啟動服務器之前,它把目錄改變到MySQL安裝目錄,然後調用safe_mysqld。如果你有在一個非標準的地點安裝的二進制分發,你可能需要編輯mysql.server。修改它,運行safe_mysqld前,cd到正確的目錄。


4、讓mysql.server以特定的用戶啟動服務器


如果你想要作為一些特定的用戶運行服務器,你可以改變mysql_daemon_user=root行使用其他用戶,你也能修改mysql.server把其他選項傳給safe_mysqld。


當然你也可以利用選項文件給mysql.server腳本提供參數。
你也可以在一個全局“/etc/my.cnf”文件中增加mysql.server的選項。一個典型的“/etc/my.cnf”文件可能看起來像這樣:


[mysqld]
datadir=/usr/local/mysql/var
socket=/tmp/mysqld.sock
port=3306


[mysql.server]
user=mysql
basedir=/usr/local/mysql



mysql.server腳本使用下列變量:user、datadir、basedir、bindir和pid-file。


5、利用mysql.server腳本讓服務器自動啟動


mysql.server腳本的重要性在於你可以使用它配置一個隨操作系統自動啟動的數據庫安裝,這是一個實際的系統中常用的方法。


把mysql.server復制到/etc/rc.d/init.d目錄裡面:


# cd /etc/rc.d/init.d
# cp /usr/local/mysql/support-files/mysql.server mysql



接著把它的屬性改為“x”(executable,可執行)


# chmod +x mysql


最後,運行chkconfig把MySQL添加到你系統的啟動服務組裡面去。


# /sbin/chkconfig –del mysql
# /sbin/chkconfig –add mysql



你也可以這樣做,手工建立鏈接:


#cd /etc/rc.d/rc3.d       (根據你的運行級不同而不同,可以是rc5.d)
#ln –s ../init.d/mysql S99mysql



在系統啟動期間,S99mysql腳本利用start參數自動啟動。


使用mysqladmin實用程序關閉、重啟數據庫


日常維護數據庫,經常需要關閉或者重新啟動數據庫服務器。mysql.server stop隻能用於關閉數據庫系統,並不方便,而且mysql.server腳本用特定用戶身份啟動服務器,因此使用該教本需要超級用戶的權限。相比之下 mysqladmin就方便的多,並且適用於MySQL所有類型、平臺的安裝。


關閉數據庫服務器


mysqladmin shutdown


重啟數據庫服務器


mysqladmin reload


獲得幫助


mysqladmin –help


mysqladmin實用程序非常有使用價值,仔細閱讀幫助輸出,你會得到更多的用法。


如果出現下面的錯誤:


mysqladmin: connect to server at localhost failed
error: Access denied for user: (Using password: YES)


 


表示你需要一個可以正常連接的用戶,請指定-u -p選項,例如,你現在可以:


shell>mysqladmin -u root -p shutdown
Enter Password:***********



輸入你修改過的密碼即可。


啟動或停止NT平臺上的系統服務


上面幾節介紹瞭Unix平臺上使數據庫服務器自動啟動的方法,而在windows(NT)平臺上為瞭讓MySQL數據庫自動啟動,你需要將MySQL服務器安裝成NT系統的一種服務。


1、將MySQL安裝成系統服務


對於NT,服務器名字是mysqld-nt。


C:mysqlin> mysqld-nt –install



(你可以在 NT 上使用mysqld或mysqld-opt服務器,但是那些不能作為一種服務啟動或使用命名管道。)


2、修改選項文件


如果你的mysql沒有安裝缺省的位置c:mysql,那麼因為數據庫將無法確定數據庫目錄的位置,而無法啟動。這種情況下,你需要提供一個全局的選項文件c:my.cnf。將安裝目錄中的my-example.cnf文件拷貝到c盤根目錄下。修改或加入:


[mysqld]
basedir = x:/path/to/mysql/



3、啟動、停止服務器的方法


你可以用下列命令啟動和停止MySQL服務:


NET START mysql
NET STOP mysql



註意在這種情況下,你不能對mysqld-nt使用任何其他選項!你需要使用選項文件提供參數。可以在選項文件中提供合適的參數。


使用選項文件提供服務器的參數


本節介紹守護程序需要的比較重要的選項。


對於全局選項文件(windows:c:/my.cnf 或者 unix:/etc/my.cnf),比較重要的選項有:


user 運行守護程序的用戶,如果你使用mysql.server,並且在[mysql.server]中指定瞭user,那麼這個選項沒有必要。


log-update=file 更新日志名,對於恢復數據庫有重要意義,數據庫服務器將生成file.n為名的更新日志文件。


-l, –log[=fil

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *