現(xiàn)在最新版的mysql都是release版本,即不需要configure、make、makeinstall命令來配置安裝的。解壓之后直接復(fù)制到目標(biāo)目錄下,然后按照目錄中的INSTALL-BINARY文件中所指示的進(jìn)行配置即可。
1. > groupadd mysql
2. > useradd -r -g mysqlmysql
這兩步的作用是創(chuàng)建必需的組和所有者(其實(shí)這兩步的具體作用我也不是很了解,因?yàn)槲乙恢倍际鞘褂胷oot賬號來操作的)。
注意的是,有些linux系統(tǒng)(我遇到過的有redhat、centos)中都會自帶mysql,但是版本一般比較舊。如果刪除舊版本安裝新版本,最好在/etc/passwd中將已經(jīng)有的mysql用戶刪除掉(當(dāng)然應(yīng)該也可以沿用系統(tǒng)自動創(chuàng)建的組和用戶)。
3. > cd /usr/local/mysql //這個是我通常用的放置用戶程序的路徑
4. > chown -R mysql .
5. > chgrp -R mysql .// 將文件夾的所有者和所有者所在的組設(shè)置為mysql
6. > scripts/mysql_install_db--user=mysql // 安裝
7. > chown -R root . //將文件夾的所有者改回root
8. > chown -R mysql data //將存放數(shù)據(jù)庫文件的目錄所有者設(shè)置為mysql
(我還是覺得上面幾步太折騰了,因?yàn)槲乙恢倍际鞘褂胷oot操作。不過這幾步的作用馬上就顯現(xiàn)出來了。。。)
9. > cp support-files/my-large.cnf/etc/my.cnf
關(guān)于這步以后再詳細(xì)介紹,這里只要知道是創(chuàng)建數(shù)據(jù)庫配置文件即可
10. > bin/mysqld_safe --user=mysql&
啟動mysql,并使之在后臺運(yùn)行,啟動時設(shè)置該進(jìn)程的用戶為mysql。
這里多解釋幾句:
首先,mysql的守護(hù)進(jìn)程是mysqld,bin目錄下也有這個命令。但實(shí)際上用戶很少與之直接交互,而是通過一個包裝程序mysqld_safe與之交互。mysqld_safe會在守護(hù)進(jìn)程mysqld啟動之前添加一些與安全有關(guān)的日志特性和系統(tǒng)集成特性(具體是哪些我也不知道,暫時應(yīng)該也不需要知道。。。)。
其次,在啟動守護(hù)進(jìn)程的時候,將進(jìn)程用戶設(shè)置為mysql。mysql的守護(hù)進(jìn)程應(yīng)該按非root用戶運(yùn)行,這樣在攻擊者通過mysql安全漏洞成功入侵到服務(wù)器時,可以將破壞減少到最低程度。
11. > cp support-files/muysql.server/etc/init.d/mysql.server
這一步的作用是設(shè)置mysql開機(jī)自動啟動。其中mysql.server是一個腳本文件,太長了沒有仔細(xì)研究,其功能就是進(jìn)行一些設(shè)置后啟動mysql。
下面來講一下和系統(tǒng)啟動相關(guān)的目錄 ==> /etc/rc.d
注:rc是run control的縮寫。
在/etc/rc.d目錄下有這樣幾個目錄:
init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
init.d目錄下存放的是系統(tǒng)啟動時可能會運(yùn)行的腳本,其中一些腳本的功能是啟動安裝在系統(tǒng)中的程序。
rcN.d(N=0,...,6)目錄中存放的都是到init.d目錄下腳本的符號鏈接(軟鏈接)。
其中N表示的是系統(tǒng)的運(yùn)行級別。關(guān)于運(yùn)行級別,可以查看/etc/inittab文件中的開頭部分:
************************************************************************************************
# Default runlevel. The runlevels used by RHSare:
# 0 - halt (Do NOT set initdefault tothis)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The sameas 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault tothis)
#
id:5:initdefault:
************************************************************************************************
附上中文版:
# 缺省的運(yùn)行級,RHS 用到的級別如下:
# 0 - 停機(jī)(千萬不要把initdefault 設(shè)置為0 )
# 1 - 單用戶模式
# 2 - 多用戶,但是沒有 NFS
# 3 - 完全多用戶模式
# 4 - 沒有用到
# 5 - X11
# 6 - 重新啟動 (千萬不要把initdefault 設(shè)置為6 )
#
************************************************************************************************
這段腳本介紹了7種運(yùn)行級別,并設(shè)置默認(rèn)運(yùn)行級別為5(一般的linux系統(tǒng)X11圖形界面的運(yùn)行級別是5)。
init進(jìn)程(ID為1的進(jìn)程)在系統(tǒng)自舉時會讀取inittab文件,確定系統(tǒng)的運(yùn)行級別。
rcN.d目錄下的符號鏈接指向的是該運(yùn)行級別下系統(tǒng)要運(yùn)行的腳本。其中符號鏈接分為兩種,一種是以S開頭的,表示要啟動的服務(wù);另一種是以K開頭的,表示要關(guān)閉的服務(wù)。
這里我們只關(guān)注如何設(shè)置開機(jī)自動啟動,所以只看S開頭的符號鏈接。仍是以mysql為例:
首先運(yùn)行命令“chkconfig--list”查看系統(tǒng)服務(wù)(這里只給出mysql的那一行):
mysqld 0:關(guān)閉 1:關(guān)閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關(guān)閉
可以看到在運(yùn)行級別為2-5中,mysql都是默認(rèn)啟動的。在rc2.d-rc5.d目錄下,我們可以找到如下文件:
lrwxrwxrwx 1 root root 16 09-07 03:29 S64mysqld-> ../init.d/mysqld
S64mysqld是指向init.d目錄下mysqld腳本的鏈接。S表示啟動(start);64表示啟動的順序,因?yàn)橛行┓?wù)的啟動要依賴于其他服務(wù),這個序號是允許重復(fù)的,如果我們要添加新的開機(jī)啟動項(xiàng),通常將序號設(shè)置為99。
通常設(shè)置開機(jī)啟動項(xiàng)的一個簡單的方法是使用chkconfig命令,
> chkconfig mysqld off
該命令關(guān)閉了mysql開機(jī)啟動??梢酝ㄟ^“chkconfig--list”命令查看,或者直接去rc5.d目錄下,這時候會發(fā)現(xiàn)S64mysqld變成了K64mysqld。
若要恢復(fù)mysql開機(jī)啟動,運(yùn)行:
> chkconfig mysqld on
最后一部分說的有點(diǎn)亂,部分是參考下面兩篇文章:
/etc/rc.d/init.d和/etc/init.d聯(lián)系區(qū)別