1. 程式人生 > >linux安裝mysql 幾種方式

linux安裝mysql 幾種方式

1. 關於本文
    本文將以MySQL 5.0.51為例,以CentOS 5為平臺,講述MySQL資料庫的安裝和設定。

2. 關於MySQL
    MySQL是最流行的開源SQL資料庫管理系統,它由MySQL AB開發、釋出和支援。MySQL AB是一家由MySQL開發人員建立的商業公司,它是一家使用了一種成功的商業模式來結合開源價值和方法論的第二代開源公司。MySQL是MySQL AB的註冊商標。
    MySQL是一個快速的、多執行緒、多使用者和健壯的SQL資料庫伺服器。MySQL伺服器支援關鍵任務、重負載生產系統的使用,也可以將它嵌入到一個大配置(mass-deployed)的軟體中去。
 MySQL的官方發音是“My Ess Que Ell”,而不是“My sequel”。但是你也可以使用“My sequel”和其他的方言。

    MySQL網站(http://www.mysql.com)提供了關於MySQL和MySQL AB的最新的訊息。
    MySQL具有如下特點或特性:
 MySQL是一個數據庫管理系統;
 MySQL是一個關係資料庫管理系統;
 MySQL是開源的;
 MySQL伺服器是一個快的、可靠的和易於使用的資料庫伺服器;
 MySQL伺服器工作在客戶/伺服器或嵌入系統中;
 有大量的MySQL軟體可以使用。

3. MySQL的安裝
 MySQL有兩種安裝方式:原始碼包安裝和二進位制包安裝。這兩種方式各有特色:二位制包安裝不需編譯,針對不同的平臺有經過優化編譯的不同的二進位制檔案以及包格式,安裝簡單方便;原始碼包則必須先配置編譯再安裝,可以根據你所用的主機環境進行優化,選擇最佳的配置值,安裝定製更靈活。下面分別介紹這兩種安裝方式。

 3.1 原始碼包方式安裝
    3.1.1 在linux系統中新增執行Mysql的使用者和組
              /usr/sbin/groupadd mysql
              /usr/sbin/useradd -d /var/lib/mysql -s /sbin/nologin -g mysql mysql           
    3.1.2 下載最新穩定發行版(GA)的MySQL軟體
              訪問MySQL網站http://dev.mysql.com/downloads/下載最新穩定發行版的MySQL原始碼包。本文使用的是5.0.51版本,在linux系統下用下面的命令下載:
              wget 
http://mysql.mirror.kangaroot.net/Downloads/MySQL-5.0/mysql-5.0.51.tar.gz
    3.1.3 解壓縮下載的原始碼包
              首先建立一個工作目錄( 筆者建議的目錄為/usr/local/src/mysql ) :
              mkdir -p /usr/local/src/mysql
              將下載的原始碼包移至工作目錄:
              mv  mysql-5.0.51.tar.gz  /usr/local/src/mysql
              進入工作目錄並用tar命令解壓原始碼包:
              cd  /usr/local/src/mysql
              tar zxvf  mysql-5.0.51.tar.gz 
              命令執行結束後,當前工作目錄下將生成一個新的子目錄mysql-5.0.51,此目錄下即為mysql的原始碼檔案。
    3.1.4 配置Makefile檔案
              進入MySQL原始碼目錄:
              cd mysql-5.0.51
              執行下面的命令可檢視可配置選項:
        ./configure --help
              本文使用的配置命令格式如下:
              CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-thread-safe-client --enable-assembler --with-big-tables --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static  --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=complex 
              配置選項說明:
              CC:C編譯器的名稱(用於執行configure),本文示例為gcc
              CFLAGS:C編譯器的標誌(用於執行configure),本文示例為-O3,指定優化級別為3
              CXX:C++編譯器的名稱(用於執行configure),本文示例為gcc
              CXXFLAGS:C++編譯器的標誌(用於執行configure)
    --prefix:指定安裝目錄,本文示例為/usr/local/mysql
              --localstatedir:指定預設資料庫檔案儲存目錄,預設為安裝目錄下的var目錄
     --enable-thread-safe-client:編譯執行緒安全版的MySQL客戶端庫
    --enable-assembler:使用一些字元函式的彙編版本
              --with-client-ldflags:客戶端連結引數,本文示例為指定靜態編譯mysql客戶端
    --with-mysqld-ldflags:伺服器端連結引數,本文示例為指定靜態編譯mysql伺服器
              --with-big-tables:在32位平臺上支援大於4G行的表
    --with-charset:指定預設字符集。mysql預設使用latin1(cp1252)字符集,可以使用此選項更改。字符集可以是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7或win1251ukr。
              --with-collation:指定預設校對規則。mysql預設使用latin1_swedish_ci校對規則,可以使用此選項更改。
    --with-extra-charsets:伺服器需要支援的字符集,有三種可能的值:空格間隔的一系列字符集名;complex ,包括不能動態裝載的所有字符集;all,將所有字符集包括進二進位制。本文示例為complex。
    注意:要想更改字符集和校對規則,要同時使用--with-charset和--with-collation選項。 校對規則必須是字符集的合法校對規則。(在mysql中使用SHOW COLLATION語句來確定每個字符集使用哪個校對規則)。
    3.1.5 編譯原始碼
    執行下面的命令編譯原始碼:
    make
    3.1.6 安裝
    執行下面的命令安裝mysql到目標路徑:
    make install
    3.1.7 複製預設全域性啟動引數配置檔案到/etc目錄
              原始碼方式安裝需要手動複製配置檔案,配置模板位於原始碼樹的support-files目錄,有my-small.cnf、my-medium.cnf、my-large.cnf、my-huge.cnf四個,選擇跟你的環境相接近的一個複製到/etc目錄,並做適當修改。關於mysql配置檔案的詳細資訊請參閱筆者的其它文章或是mysql官方文件
              本文示例選擇my-medium.cnf,執行下面的命令將其複製到/etc目錄:
              cp ./support-files/my-medium.cnf  /etc/my.cnf
    3.1.8 初始化授權表
              執行下面的命令初始化授權表: 
    ./scripts/mysql_install_db --user=mysql
    3.1.9 更改mysql資料目錄屬主和許可權
              預設資料庫檔案儲存目錄為安裝目錄下的var目錄,執行configure命令時可通過--localstatedir引數指定不同的目錄,本文示例為預設位置。
              chown -R mysql.mysql /usr/local/mysql/var
              chmod -R 700 /usr/local/mysql/var
    3.1.10 設定開機自啟動服務控制指令碼
              執行下面的命令複製啟動指令碼到資源目錄:
              cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
              執行下面的命令增加mysqld服務控制指令碼執行許可權:
              chmod +x /etc/rc.d/init.d/mysqld
              執行下面的命令將mysqld服務加入到系統服務:
              chkconfig --add mysqld
              執行下面的命令檢查mysqld服務是否已經生效:
              chkconfig --list mysqld
              命令輸出類似下面的結果:
              mysqld          0:off 1:off 2:on 3:on 4:on 5:on 6:off
              表明mysqld服務已經生效,在2、3、4、5執行級別隨系統啟動而自動啟動,以後可以使用service命令控制mysql的啟動和停止。
    啟動mysqld服務:
    service mysqld start
              停止mysqld服務:
              service mysqld stop
              執行下面的命令關閉開機自啟動:
    chkconfig mysqld off
              執行下面的命令可以改變開機自啟動的執行級別為3、5:  
    chkconfig --level 35 mysqld on
    3.1.11 將mysql的bin目錄加入PATH環境變數
              編輯/etc/profile檔案:
              vi /etc/profile
              在檔案最後新增如下兩行:
              PATH=$PATH:/usr/local/mysql/bin
              export PATH
              執行下面的命令使所做的更改生效:
              . /etc/profile

    3.2 二進位制包方式安裝       
 3.2.1 從安裝媒體安裝
              Mysql二進位制包已經包含在CentOS 5的安裝媒體中,可以直接從安裝媒體中安裝下面三個rpm包:
              mysql-5.0.22-2.1.0.1.i386.rpm
              mysql-devel-5.0.22-2.1.0.1.i386.rpm
              mysql-server-5.0.22-2.1.0.1.i386.rpm
              不同的版本檔名有所不同,請注意區分。
        執行下面的命令安裝:
              rpm -iUvh  mysql-5.0.22-2.1.0.1.i386.rpm
              rpm -iUvh  mysql-devel-5.0.22-2.1.0.1.i386.rpm
              rpm -iUvh  mysql-server-5.0.22-2.1.0.1.i386.rpm
    3.2.2 通過yum安裝
              如果你安裝的機器此時可以連線到網際網路,筆者建議使用yum命令來簡化安裝過程:
        yum install mysql-server mysql-devel mysql
        yum將自動從centos的映象站點查詢你指明的軟體的最新二進位制包,並檢查軟體包依賴關係,安裝軟體的同時自動安裝其依賴的軟體包。
    3.2.3 從mysql網站下載最新穩定版本的二進位制包安裝
              通過CentOS安裝媒體或yum安裝的二進位制包版本會落後於mysql開發者網站釋出的版本,可以從mysql網站下載安裝最新穩定版本的mysql。
              訪問MySQL網站http://dev.mysql.com/downloads/下載最新穩定發行版的相應硬體平臺的MySQL。本文使用的是Red Hat Enterprise Linux 5 RPM (x86) 5.0.45版本。需要下載Server、Client、Headers and Libraries、Share Libraries/Shared compatibility libraries幾個rpm包,其它為可選包,按需要選擇。
              在linux系統下用下面的命令下載:
              wget http://mysql.mirrors.pair.com/Downloads/MySQL-5.0/MySQL-server-community-5.0.45-0.rhel5.i386.rpm
              wget http://mysql.mirrors.pair.com/Downloads/MySQL-5.0/MySQL-client-community-5.0.45-0.rhel5.i386.rpm
              wget http://mysql.mirrors.pair.com/Downloads/MySQL-5.0/MySQL-devel-community-5.0.45-0.rhel5.i386.rpm
              wget http://mysql.mirrors.pair.com/Downloads/MySQL-5.0/MySQL-shared-community-5.0.45-0.rhel5.i386.rpm
              wget http://mysql.mirrors.pair.com/Downloads/MySQL-5.0/MySQL-shared-compat-5.0.45-0.rhel5.i386.rpm
              執行下面的命令安裝:
              rpm -iUvh MySQL-server-community-5.0.45-0.rhel5.i386.rpm
              rpm -iUvh MySQL-client-community-5.0.45-0.rhel5.i386.rpm
              rpm -iUvh MySQL-devel-community-5.0.45-0.rhel5.i386.rpm
              rpm -iUvh MySQL-shared-community-5.0.45-0.rhel5.i386.rpm
              rpm -iUvh MySQL-shared-compat-5.0.45-0.rhel5.i386.rpm

4. MySQL的配置
    4.1 目錄結構
 4.1.1 原始碼包方式安裝目錄結構
           原始碼包方式安裝時通常是在3.1.4節中configure命令的--prefix選項指定的目錄中建立如下的目錄結構,特殊指定的目錄除外:
           ./bin                               #mysql使用者可執行檔案目錄
           ./include/mysql           #mysql C標頭檔案目錄
           ./info                              #mysql 資訊檔案目錄
           ./lib/mysql                    #mysql庫檔案目錄
           ./libexec                        #mysql後臺daemon程式目錄
           ./man                             #mysql聯機幫助文件目錄
           ./mysql-test                  #mysql測試程式目錄
           ./share/mysql              #mysql公用檔案目錄,包括字符集、配置檔案模板、啟動指令碼、初始化SQL檔案等
           ./sql-bench                   #mysql壓力測試程式目錄
           /etc/my.cnf                    #mysql配置檔案
           /etc/rc.d/init.d/mysqld #mysqld服務啟動指令碼

    4.1.2 RPM二進位制包方式安裝目錄結構
           二進位制包方式安裝時使用系統軟體預設目錄結構 :
           /usr/bin                     #mysql使用者可執行檔案目錄
           /usr/libexec              #mysql後臺daemon程式目錄
           /usr/lib/mysql          #mysql庫檔案目錄
           /usr/lib64/mysql     #如果為64系統,mysql 64位庫檔案目錄
           /usr/share/doc        #mysql文件目錄
           /usr/share/info        #mysql資訊檔案目錄
           /usr/share/man      #mysql聯機幫助文件目錄
           /usr/share/mysql    #mysql字符集目錄
           /usr/include/mysql #mysql C標頭檔案目錄
           /var/log                     #mysqld服務日誌檔案目錄
           /var/run/mysqld      #mysqld服務執行狀態目錄
           /var/lib/mysql          #mysql資料檔案目錄
           /etc/my.cnf               #mysql配置檔案
           /etc/rc.d/init.d/mysqld  #mysqld服務啟動指令碼

    4.2 配置檔案
          Linux系統下,mysql的配置引數檔案為my.cnf,一般按下面的順序查詢此檔案:/etc目錄、mysql安裝目錄、mysql資料目錄。配置模板位於原始碼樹的support-files目錄,有my-small.cnf、my-medium.cnf、my-large.cnf、my-huge.cnf四個,關於mysql配置檔案的詳細資訊請參閱筆者的其它文章或是mysql官方文件

    4.3 啟動mysqld服務
           執行下面的命令啟動mysql:
           service mysqld start

    4.3 設定mysql帳號
           mysql安裝後預設生成兩個帳號:一個是root,未設定密碼,可以從本機登入到mysql;另一個是匿名帳號,無帳號名、無密碼,可以從本機登入,未提供使用者名稱的連線都將假定為此帳號。這樣的設定存在著安全隱患,按下面的步驟進行更改。
           以root帳號連線到mysql伺服器:
           mysql -u root 
           如果提示找不到mysql檔案,請嘗試使用絕對路徑,如本文示例為:
           /usr/local/mysql/bin/mysql -u root 
           命令成功執行後將進入到mysql命令提示符下:
           mysql>
           (以下命令均在mysql命令提示符下執行)
           改變當前資料庫為mysql:
           use mysql
           設定從本地主機登入的root帳號密碼:
           set password for