MySQL資料庫的啟動與終止
來源:互聯網
上載者:User
直接運行精靈
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: / mysql/bin>mysqld --standalone
或者C: / mysql/bin>mysqld-nt –standalone
如果你使用mysqld並且沒有把mysql安裝在標準的位置,通常需要提供—basedir選項你的資料庫的安裝位置。
$safe_mysqld --basedir=”/path/to/mysql” &(Unix平台)
c:/mysql/bin>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: 'root@localhost' (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:/mysql/bin> 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[=file] 指定常規日誌名
--log-bin[=file] 指定使用的二進位記錄檔,應用於伺服器複製。
-Sg, --skip-grant-tables 啟動時不載入授權表,維護時使用。
-u, --user=user_name 啟動伺服器使用的Unix帳戶
--socket=... 指定是用的Unix通訊端檔案名稱,在同時運行多個伺服器時使用。
-P, --port=... 指定伺服器使用的連接埠,在同時運行多個伺服器時使用。(www.3lian.com)
總結
作為MySQL的管理員,你平時的指責就是確保伺服器儘可能的正常運行,使得客戶機能夠正常訪問。本章討論了如何啟動和重啟、關閉伺服器,如果你具備了這個能力,就可以更好的維護伺服器安裝。本章介紹的方法,多數適合於Unix系統,讀者請仔細分辨