天天看點

Linux全攻略--MySQL資料庫配置與管理

      MySQL是一種精巧的,多使用者和多線程的中小型SQL資料庫系統,由一個伺服器守護程序mysqld和很多不同的客戶程式和庫組成.現在形成了一個"Linux+Apache+PHP+MySQL"建構電子商務網站的黃金網站的黃金組合.  

     MySQL不是開放源代碼的産品,但在某些情況下可以自由使用.由于它的強大功能,靈活性,豐富的應用程式設計接口,以及精巧的系統結構,受到了廣大自由軟體愛好者甚至是商業軟體使用者的青睐.

     MySQL的特點

    MySQL具備非常好的性能,甚至可以和目前的所有商用資料庫系統相媲美,MySQL最主要的優點就是"簡單,高效,穩定性高".下面是具體的特點: 

    MySQL可以運作在不同的平台上,如:WINDOWS98/NT/200/2003和RED HAT LINUX.而且在UNIX/LINUX環境下支援多線程的運作方式.

    MySQL提供對多種資料庫的支援,如:Oracle,Informix,Sybase,也提供對ODBC的支援.

   MySQL可以使用多種語言,如:C,C++,JAVA,PERL,PHP等.

   MySQL提供非常完善的權限系統

一.安裝和啟動MySQL

    1.安裝SQL

先檢視安裝沒.

安裝好的可以看到如圖的安裝包.

2.啟動MySQL

兩種啟動方法.

檢視運作狀态

如果希望MySQL在下次系統啟動時自動啟動,可用下面的指令:

#ntsysv或在services菜單中将mysqld 選中.

二.MySQL實用程式簡介

   MySQL安裝完成之後,可以在/usr/bin路徑下找到MySQL實用程式.

safe_mysqld  :一個腳本檔案,用于以安全的方式啟動mysqld 守護程序,其安全包括:當一個錯誤發生時,有能力重新開機伺服器并且将運作時的資訊記錄到一個日志檔案中.

mysql :一個基于指令行的MySQL用戶端程式

mysql_install_db :用于以預設權限建立MySQL權限表,該程式通常僅在系統上第一次安裝MySQL時執行一次

mysqladmin :用于執行資料庫的管理操作,如建立或删除資料庫,加載授權表和停止MySQL服務等.也可以用于檢視MySQL版本,程序和狀态資訊

myisamchk:用于描述,檢查,優化和修複MySQL中和各個表,并可以顯示表的相關資訊

mysqlshow:用于顯示資料庫,表,列和索引等資訊

mysqlaccess:一個腳本,用于檢查對主機,使用者和資料庫組合的存取權限

mysqlbug:MySQL錯誤報告腳本,用于向MySQL郵件清單中添加錯誤報告

mysqldump:用于将MySQL資料庫中的資料導出一個文本檔案.

mysqlmport:提供一個到SQL語句LOAD DATA INFILE的指令行接口,通過LOAD DATA INFILE指令,可以将文本檔案導入到資料庫中.

make_binary_release:用于制作一個編譯MySQL的二進制版本

msql2mysql:一個外殼腳本,用于轉換MSQL程式到MySQL

replace:一個實用程式,由msql2mysql使用.

三.MySQL資料庫的管理與維護.

1.建立資料庫

   在MySQL資料庫系統中,可以使用兩種方法來建立資料庫,即在用戶端程式mysql環境下使用SQL語句CREATE DATABASE或在LINUX的SHELL環境下使用管理工具mysqladmin的子指令CREATE.

建立後檢視資料庫.可看到存在3個資料庫.

這是使用管理工具mysqladmin建立資料庫.這樣兩種方法都介紹了.

2.删除資料庫.

同樣可以利用上面兩種方法實作.

這是使用SQL語句實作

這是使用工具實作.

3.建立和删除表

資料庫建立之後,可使用如下指令來在現存的資料庫中建立或删除表

在資料庫sales中建立四個表.

建立完成之後檢視有哪些表,然後進行删除表.

4.檢視表結構.

表建立完成後,可使用如下指令來檢視表的結構.

可以看到表中的資料結構.

5.向表中添加并檢視資料.

添加後進行檢視表中的資料.

6.維護索引

MySQL資料庫表的所有列類均可建立索引,一個表最多可有16個索引,同時,MySQL可以在一個表的多個列上建立索引,一個索引可以由最多15個列組成.

 1)建立索引.

建立test表,同時使用name列的前10字元建立索引.建立後進行檢視.

使用CREATE INDEX語句為現存表employee中的name列建立索引.

使用ALTER TABLE語句為現存表products中的name列建立索引.

2)删除索引

可以使用DROP INDEX或ALTER TABLE語句.

使用SHOW檢視的時候,可知被删除了.

使用ALTER語句删除.

四.MySQL資料目錄和日志檔案

1.MySQL資料目錄的位置.

   預設情況下,通過RPM包安裝的MySQL資料目錄為/var/lib/mysql.

檢視配置檔案my.cnf 的内容.

使用工具檢視.

2.MySQL資料目錄的結構.

    MySQL資料目錄中包含了由伺服器管理的所有資料庫和表,它們被組織成一個樹狀結構,該結構是通過LINUX檔案系統的層次結構用簡單的方式實作.

   MySQL每個資料庫都對應自己的資料庫目錄,這些資料庫目錄作為子目錄存儲在MySQL資料目錄中,與其所代表資料庫名稱相同.

可看到有3個資料庫目錄.

資料庫中的表對應資料庫目錄中的檔案,每個表在資料庫目錄中都對應3個檔案.一個是格式檔案,一個資料檔案和一個索引檔案.每個檔案的基本名稱都與該表相同.擴充名指明該檔案的類型.如下:

格式檔案:.frm

資料檔案:.MYD

索引檔案:.MYI

通過下面的操作可以檢視資料庫目錄中的表檔案.

顯示mysql資料庫中目錄的表檔案.

3.MySQL日志檔案.

    這些檔案提供了關于伺服器運作的重要資訊,對資料庫的管理和維護是非常重要的.

1)錯誤日志.包含了伺服器寫入标準錯誤輸出裝置的所有消息,同時還包含了MySQL服務的啟動和關閉事件.錯誤日志是由實用程式safe_mysqld産生,是以在通過調用safe_mysqld啟動MySQL服務時,錯誤日志才會存在.

    預設情況下,錯誤日志并不存儲在MySQL資料目錄中,是由于配置檔案/etc/my.cnf中指定為/var/log/mysqld.log.

可看到err-log這一行指定了錯誤日志檔案為/var/log/mysqld.log.

這是用指令#less /var/log/mysqld.log傳回錯誤日志的内容.其中對MySQL服務的啟動和關閉做了記錄.

2)正常日志和更新日志.正常日志是用來記錄有關MySQL伺服器運作的正常資訊,包括使用者的連接配接,查詢以及其它各種事件.更新日志用來記錄修改資料庫的查詢資訊.

   正常日志和更新日志預設情況下并沒啟用.

可根據需要啟用.

添加log   log-update選項來啟用更新日志.

五.MySQL資料庫使用者和權限

MySQL提供了一個非常實用的權限系統,用于管理和控制某個使用者使用其所提供的主機名,使用者名和密碼能否連接配接到指定的資料庫伺服器,能否打開所需資料庫和能否對熱氣進行讀取,添加,修改和删除等操作.

1.系統資料庫mysql

   MySQL内置了一個系統資料庫mysql,其中包含存放着權限系統所需要的資料的授權表.當MySQL伺服器啟動時,會首先讀取系統資料庫mysql中的授權表,親将表中相關的資料庫裝入記憶體;當使用者連接配接資料庫伺服器并對資料庫進行存取操作時,MySQL會根據這些表中的資料做相應的權限控制.是以,在設定使用者的存取權限時,必然要對mysql資料庫有關的表進行修改.

  mysql資料庫中用于權限系統的授權表主要包括user,db,host,tables_priv,columns_priv.可以啟用用戶端程式mysql.執行show tables指令進行檢視.

2.MySQL權限系統的工作原理

   MySQL權限系統保證所有的使用者可以嚴格按照事先配置設定好的權限對資料庫進行允許的操作.

  1)第一階段--連接配接驗證階段.

使用者的身份根據兩個資訊來确定,即從哪個主機連接配接和使用哪個MySQL使用者.連接配接驗證需要使用系統資料庫mysql中user表的Host,User和Password 共3個範圍字段.

  2)第二階段--請求驗證階段.

這一階段,MySQL權限系統将會檢查使用者所發出的每一個對于資料庫的操作請求,以确定使用者是否具有足夠的權限來執行這一操作.

3.連接配接MySQL伺服器

  要想使用mysql用戶端程式對資料庫進行管理,首先需要連接配接将要管理的MySQL伺服器.連接配接時,需要指定主機名,使用者名和密碼.

4.MySQL的初始權限.

MySQL安裝完成之後,在啟動MySQL服務時,會加載授權表中的初始權限設定,這些初始權限存儲在user和db表中.主要包括:

   内置一個密碼為空的root使用者,是超級使用者.使用root使用者連接配接伺服器時,必須由本地主機(localhost)發出.

  内置一個匿名使用者,該使用者可對有一個名為"test"或名稱以"test_"開始的資料庫進行任何操作.使用匿名使用者連接配接伺服器時,也必須由本地主機發出.

  其它權限均被拒絕.

5.設定MySQL超級使用者root密碼.

将密碼設定為crq

看最後一個是将匿名使用者删除.

6.設定MySQL資料庫權限示例.

1)添加新的使用者權限.

使用root登入後,使用GRANT語句來添加一個可以從本地主機連接配接到MySQL伺服器的使用者crq,但連接配接時必須使用密碼crqpass.

使用同樣的方法添加一個可以從其它任何地方連接配接到MySQL伺服器的超級使用者crq,使用密碼為crqpass.

2)授予使用者特定的權限

使用GRANT語句添加一個可以從本地主機連接配接到MySQL伺服器的使用者yang,并且授予其針對sales資料庫中enployee表的select 和insert權限.

檢視資料庫中的表.

退出重新連接配接資料庫伺服器.

表明目前使用者yang僅針對表employee具有操作權限,使用者不具有操作權限的表對于該使用者來說是不可視的,不會出現在清單中.

表明目前使用者對表有SELECT權限.

表明目前使用者有INSERT權限.

目前使用者不允許對employee表的DELETE權限.

3)撤消使用者權限.如果想撤消使用者權限,需要使用REVOKE語句.

然後插入資料的時候就不行了,說明yang 針對employee表的insert權限已被撤消.

7.MySQL資料庫的備份和恢複

把資料庫sales備份到mysql.bak目錄.然後檢視備份成功.

先删除資料庫sales,再建立. sales.

可看到恢複成功.

到這裡全部介紹完畢.

     本文轉自yangming1052 51CTO部落格,原文連結:http://blog.51cto.com/ming228/112804,如需轉載請自行聯系原作者