天天看點

MySQL資料庫系統

<b>MySQL</b><b>資料庫系統</b>

<b>具體步驟:</b>

<b>1. </b><b>準備工作</b>

為了避免發生端口沖突、程式沖突等現象,建議先查詢MySQL軟體的安裝情況,确認沒有使用RPM方式安裝的mysql-server、mysql軟體包,否則建議将其解除安裝。

MySQL資料庫系統

<b>2. </b><b>源碼編譯及安裝</b>

<b>1) </b><b>建立運作使用者</b>

為了加強資料庫服務的權限控制,建議使用專門的運作使用者,如mysql。此使用者不需要直接登入到系統,可以不建立宿主檔案夾。

MySQL資料庫系統

<b>2) </b><b>解包</b>

将下載下傳的mysql源碼包解壓,釋放到/usr/src/目錄下,并切換到展開後的源碼目錄。

MySQL資料庫系統
MySQL資料庫系統

<b>3) </b><b>配置</b>

在内容豐富、結構龐大的企業網站平台中,可能會用到多種字元集的網頁,相應資料庫系統也應該支援不同的字元集編碼。在配置過程中,可以将預設使用的字元集設定為utf8,并添加對gbk、gb2312等其他字元集的支援。

MySQL資料庫系統

在配置過程之前,系統可能會提醒你設定一下系統日期,否則不能進行配置工作。

MySQL資料庫系統

在mysql 5.1.55版本的源碼包中,對于通過<b>- -</b>with-extra-charset配置選項後添加的其他字元集編碼,還需要對其進行一下小調整,才能在編譯後獲得完整的支援。如修改include子檔案下的config.h檔案,添加相應字元集的編譯定義即可:

MySQL資料庫系統
MySQL資料庫系統

<b>4) </b><b>編譯并安裝</b>

編譯報錯時,可能是缺少一個ncurses-devel包,安裝之後再配置一次即可。

MySQL資料庫系統
MySQL資料庫系統

<b>3. </b><b>安裝後的其他調整</b>

<b>1) </b><b>建立配置檔案</b>

在MySQL源碼目錄中的support-files檔案夾下,提供了适合不同負載資料庫的樣本配置檔案。如果不确定資料庫系統的應用規模,一般選擇my-medium.cnf檔案即可,該檔案能夠滿足大多數企業的中等應用需求。

MySQL資料庫系統

<b>2) </b><b>初始化資料庫</b>

為了能夠正常使用MySQL資料庫系統,應以運作使用者mysql的身份執行初始化任務,以便建立使用者授權庫、表,以及test測試庫等。初始化腳本mysql_install_db位于安裝目錄下的bin檔案夾中。此外,還應調整用于存放資料庫内容的檔案夾屬性,以便mysql使用者有權限對其進行讀寫操作。

MySQL資料庫系統
MySQL資料庫系統

<b>3) </b><b>優化執行路徑、程式庫路徑</b>

為MySQL系統的各種執行程式添加符号連結,以友善其使用。另外,建議MySQL的庫檔案、頭檔案也添加符号連結,便于在安裝其他的用到這些檔案的軟體包時能自動搜尋。

MySQL資料庫系統

<b>4. </b><b>添加系統服務</b>

若希望添加mysqld系統服務,以便通過chkconfig進行管理,可以直接使用源碼包中提供的服務腳本。找到support-files檔案夾下的mysql.server腳本檔案,将其複制到/etc/init.d/目錄下,并改名mysqld,然後再設定執行權限,通過chkconfig指令将其添加為mysqld系統服務。

MySQL資料庫系統
MySQL資料庫系統

n <b>通路MySQL資料庫</b>

<b>1. </b><b>登入到Mysql伺服器</b>

經過安裝後的初始化過程,MySQL資料庫的預設管理者賬号為root,密碼為空。若要以未設定密碼的root使用者登入本機的MySQL資料庫,可以執行以下操作:

MySQL資料庫系統

當然,如果登入的是其他的MySQL伺服器,則需要使用“-h”選項來指定目标主機位址;在有密碼的情況下,還應使用“-p”選項來進行密碼校驗。例如,若要連接配接到MySQL伺服器173.16.16.5,并以使用者adm411進行有密碼的驗證,可以執行以下操作。

MySQL資料庫系統

<b>2. </b><b>執行MySQL操作語句</b>

驗證成功後将會進入到提示符為“mysql&gt;”的資料庫操作環境,使用者可以輸入各種操作語句對資料庫進行管路。每一條MySQL操作語句可以分号“;”表示結束,輸入時不區分大小寫,但習慣上将MySQL語句中的關鍵字部分使用大寫。

例如:以root使用者登入到“mysql&gt;”環境後,執行“show master logs;”語句可以檢視到目前資料庫服務的日志檔案資訊。

MySQL資料庫系統

<b>3. </b><b>退出“mysql&gt;”操作環境</b>

在“mysql&gt;”操作環境中,執行“exit”或“quit”可以退出mysql指令工具,傳回到原來的shell環境。

MySQL資料庫系統

n <b>檢視資料庫結構</b>

<b>1. </b><b>檢視目前伺服器中有哪些庫</b>

<b>show database </b><b>語句:</b>用于列出目前MySQL伺服器中包含的庫。經初始化後的MySQL伺服器,預設建立了三個庫:test、mysql和information_schema(其中mysql包含了使用者認證相關的表),執行以下操作可以進行檢視。

MySQL資料庫系統

<b>2. </b><b>檢視目前使用的庫中有哪些表</b>

<b>show tables </b><b>語句:</b>用于列出目前所在的庫中包含的表。在操作之前,需要先使用<b>use語句</b>切換到所使用的庫。

MySQL資料庫系統

MySQL資料庫的資料檔案預設存放在/usr/local/mysql/var目錄下,每個資料庫對應一個子目錄,用于存儲資料表檔案。每一個資料表對應為三個檔案,字尾名分别為“.from”、“.MYD”和“.MYI”。

<b>3. </b><b>檢視表的結構</b>

<b>describe</b><b>語句:</b>用于顯示表的結構,即組成表的各字段(列)的資訊。需要指定“庫名.表名”作為參數;若隻指定表名參數,則需先通過“use”語句切換到目标庫。

<b></b>

MySQL資料庫系統

n <b>建立及删除庫和表</b>

<b>1. </b><b>建立新的表</b>

<b>create database</b><b>語句:</b>用于建立一個新的庫,需指定資料庫名稱作為參數。<b></b>

MySQL資料庫系統

剛建立的資料庫是空的,其中不包含任何表,在<b>/usr/local/mysql/var/</b>目錄下會自動生成一個與建立的庫名相同的空檔案夾。

<b>2. </b><b>建立新的表</b>

<b>create table </b><b>語句:</b>用于在目前庫中建立新的表,需指定資料表名稱作為參數,并定義該表格所使用的名字段。基本格式如下所示:

<b>create table </b><b>表名 (字段1名稱類型, 字段2名稱 類型, ……, primary key (主鍵名) )</b>

<b></b>考慮到字元集相容性,最好不要使用中文字段名。

MySQL資料庫系統

<b>3. </b><b>删除一個資料表</b>

<b>drop table</b><b>語句:</b>用于删除庫中的表,需要指定“庫名.表名”作為參數;若隻指定表名參數,則需先通過“use”語句切換到目标庫。

MySQL資料庫系統

<b>4. </b><b>删除一個資料庫</b>

<b>drop database</b><b>語句:</b>使用者删除指定的庫,需要指定庫名作為參數。

MySQL資料庫系統

n <b>管理表中的資料記錄</b>

<b>1. </b><b>插入資料記錄</b>

<b>insert into </b><b>表名(字段1, 字段2, ……) values(字段1的值,字段2的值, ……)</b>

MySQL資料庫系統

在插入新的資料記錄時,如果這條記錄完整包括表中所有字段的值,則插入語句中指定字段的部分可以省略。

MySQL資料庫系統

為使用者設定密碼時,如果使用“password”,那麼檢視到的使用者密碼則是加密的;如果不使用“password”,那麼檢視到的使用者密碼則是明文的。

MySQL資料庫系統

<b>2. </b><b>查詢資料記錄</b>

<b>select</b><b>語句:</b>用于從指定的表中查找符合條件的資料記錄。MySQL資料庫支援标準的SQL查詢語句,語句格式如下所示:

<b>select </b><b>字段名1,字段名2,…… from 表名 where 條件表達式</b>

<b></b>表示所有字段時可以使用通配符“*”,若要列出所有的資料記錄則可以省略where條件子句。

MySQL資料庫系統

當需要根據特定的條件查詢記錄時,where條件字句則是必不可少的。

MySQL資料庫系統

<b>3. </b><b>修改資料記錄</b>

<b>update</b><b>語句:</b>用于修改,更新表中的資料記錄。語句格式如下所示:

<b>update </b><b>表名 set 字段名1=字段值1 [,字段名2=字段值2] where 條件表達式</b>

MySQL資料庫系統

在MySQL資料庫伺服器中,用于通路資料庫的各種使用者(如root)資訊都儲存在mysql庫的user表中,熟練的管理者可以直接修改其中的資料記錄。例如:以下操作可以<b>将資料庫使用者root的密碼設為“123456”</b>,當再次使用“mysql –u root –p”通路MySQL資料庫伺服器時,必須使用此密碼進行驗證。

MySQL資料庫系統

若是在Linux指令行環境中執行,還可以使用mysqladmin工具來設定密碼。

MySQL資料庫系統

<b>4. </b><b>删除資料記錄</b>

<b>delete</b><b>語句:</b>用于删除表中指定的資料記錄。語句格式如下所示:

<b>delete from </b><b>表名 where 條件表達式</b>

MySQL資料庫系統

在MySQL資料庫伺服器中,預設添加了從本機通路資料庫的空使用者(user、password均為空)。基于資料庫安全性考慮,應該删除這些空使用者。

MySQL資料庫系統
MySQL資料庫系統

n <b>資料庫的使用者授權</b>

MySQL資料庫的root使用者賬号擁有對所有庫、表的全部權限,頻繁使用root賬号會給資料庫伺服器帶來一定的安全風險。實際工作中,通常會建立一些低權限的使用者,隻負責一部分庫、表的管理和維護操作,甚至可以對查詢、修改、删除記錄等各種操作做進一步的細化限制,進而将資料庫的風險降至最低。

<b>1. </b><b>授予權限</b>

<b>grant</b><b>語句:</b>專門用來設定資料庫使用者的通路權限。當指定的使用者名不存在時,grant語句将會建立新的使用者,否則grant語句用于修改使用者的資訊。語句格式如下:

<b>grant </b><b>權限清單 on 庫名.表名 to 使用者名@來源位址 [ identified by ‘密碼’]</b>

<b></b>使用grant語句時,需要<b>注意的事項</b>如下<b>:</b>

? <b>權限清單:</b>用于列出授權使用的各種資料庫操作,以逗号進行分隔。例如:“select、insert、update”。使用“all”表示所有權限,可授權執行任何操作。

? <b>庫名.表名:</b>用于指定授權操作的庫和表的名稱,其中可以使用通配符“*”。

? <b>使用者名@來源位址:</b>用于指定使用者名稱和允許通路的客戶機位址,即誰能連接配接,誰從哪裡連接配接。來源位址可以是域名、IP位址,還可以使用“%”通配符,表示某個區域或網段内的所有位址。

? <b>identified by</b><b>:</b>用于設定使用者連接配接資料庫時所使用的密碼字元串。在建立使用者時,若省略“<b>identified by</b>”部分,則使用者的密碼将為空。

MySQL資料庫系統
MySQL資料庫系統

在企業伺服器的應用中,資料庫與網站伺服器有時候是互相獨立的。是以在MySQL伺服器中,應根據實際情況建立新的使用者授權,允許授權使用者從網站伺服器通路資料庫。通常的做法是,建立一個或幾個網站專用的庫,并授予所有的權限,限制通路的來源IP位址。

MySQL資料庫系統

<b>2. </b><b>檢視權限</b>

<b>show grants</b><b>語句:</b>專門用來檢視資料庫使用者的授權資訊,通過for字句可指定檢視的使用者對象(必須與授權時使用的對象名稱一緻)。語句格式如下所示:

<b>show grants for </b><b>使用者名@來源位址</b>

MySQL資料庫系統

其中usage權限對應的授權記錄中包含了使用者的連接配接密碼字串。

<b>3. </b><b>撤銷權限</b>

<b>revoke</b><b>語句:</b>用于撤銷指定使用者的資料庫權限,撤銷權限後的使用者仍然可以連接配接到MySQL伺服器,但将被禁止執行對應的資料庫操作。語句格式所示:

<b>revoke </b><b>權限清單 on 資料庫名.表名 from 使用者名@來源位址</b>

MySQL資料庫系統

掌握了上述各種MySQL管理指令的使用,已經可以滿足大多數網絡管理者(非專職資料庫管理者)的工作需要。若希望了解更多關于MySQL語句的知識,可以參閱MySQL 5.1的線上參考手冊,其位址位于http://dev.mysql.com/doc/refman/5.1/zh。

n <b>資料庫的備份與恢複</b>

及時備份資料庫是資訊安全管理的重要工作内容之一。MySQL資料庫的備份可以采用多種方式,例如直接打包資料庫檔案夾/var/local/mysql/var/,或者使用專用的導出工具。

<b>1. </b><b>備份資料庫</b>

通過mysqldump指令可以将指定的庫、表或全部的庫導出為SQL腳本,便于該指令在不同版本的MySQL伺服器上使用。例如,當需要更新MySQL伺服器時,可以先用mysqldump指令将原有庫資訊導出,然後直接在更新後的MySQL伺服器中導入即可。

<b>1) </b><b>執行導出操作</b>

使用mysqldump指令導出資料時,預設會直接在終端顯示,若要儲存到檔案,還需要結合shell的“&gt;”重定向輸出操作。指令格式如下所示:

<b>格式1:</b>導出指定庫中的部分表

<b>mysqladmin [</b><b>選項] 庫名 [表名1] [表名2] …… &gt; /備份路徑/備份檔案名</b>

<b></b><b>格式2:</b>導出一個或多個完整的庫(包括其中所有的表)

<b>mysqladmin [</b><b>選項] - -databases 庫名1 [庫名2] …… &gt; /備份路徑/備份檔案名</b>

<b></b><b>格式3:</b>備份MySQL伺服器中所有的庫

<b>mysqladmin [</b><b>選項] - -all-databases &gt; /備份路徑/備份檔案名</b>

其中,常用的選項包括“<b>-u</b>”、“<b>-p</b>”,分别用于指定資料庫使用者名、密碼。<b>例如</b>,以下操作分别使用格式1、格式2,将mysql庫中的user表導出為mysql-user.sql檔案,将整個auth庫導出為auth.sql檔案,所有操作均已root使用者的身份進行驗證。

MySQL資料庫系統

若需要備份整個MySQL伺服器中的所有庫,應使用格式3。當導出的資料量較大時,可以添加“<b>- -opt</b>”選項以優化執行速度。<b>例如</b>:以下操作将建立備份檔案all-data.sql,其中包括MySQL伺服器中的所有庫。

MySQL資料庫系統

<b>2) </b><b>檢視備份檔案内容</b>

通過mysqldump工具導出的SQL腳本是文本檔案,其中“/*……*/”部分或以“- -”開頭的行表示注釋資訊。使用grep、less、cat等文本工具可以檢視腳本内容。

MySQL資料庫系統

<b>2. </b><b>恢複資料庫</b>

使用mysqldump指令導出的SQL備份腳本,在需要恢複時可以通過mysql指令對其進行導入操作。指令格式如下所示:

<b>mysql [</b><b>選項] [庫名] [表名] &lt; /備份路徑/備份檔案名</b>

當備份檔案中隻包含表的備份,而不包括建立庫的語句時,則執行導入操作時必須指定庫名,且目标庫必須存在。<b>例如</b>:以下操作可以從備份檔案mysql-user.sql中将表導入到test庫。

MySQL資料庫系統
MySQL資料庫系統

若備份檔案中已經包括完整的庫資訊,則執行導入操作時無需指定庫名。<b>例如</b>:以下操作可以從備份檔案all-data.sql恢複其中的所有庫。

MySQL資料庫系統

繼續閱讀