MySQL源碼包在Linux上安裝和配置
《MySQL源碼包在Linux上安裝和配置》由會(huì)員分享,可在線閱讀,更多相關(guān)《MySQL源碼包在Linux上安裝和配置(30頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1.1 MySQL簡介 1$"ZsXVAU MySQL服務(wù)概述 E=GM_w MySQL是當(dāng)前開源數(shù)據(jù)庫中最受歡迎SQL數(shù)據(jù)庫管理系統(tǒng),它由MySQL AB開發(fā)、發(fā)布和支持。MySQL AB是一家基于MySQL開發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來結(jié)合開源價(jià)值和方法論的第二代開源公司。MySQL是MySQL AB的注冊(cè)商標(biāo)。 :PK (X MySQL是一個(gè)快速的、多線程、多用戶和健壯的SQL數(shù)據(jù)庫服務(wù)器。MySQL服務(wù)器支持關(guān)鍵任務(wù)、重負(fù)載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個(gè)大配置(mass-deployed)的軟件中去。 8m j
2、 gs 許可費(fèi)用方面,MySQL的普及很大程度上源于它的寬松,除了略顯不尋常的許可費(fèi)用。MySQL的價(jià)格隨平臺(tái)和安裝方式變化。MySQL的Windows版本(NT和9X)在任何情況下都不免費(fèi),而任何Unix變種(包括Linux)的MySQL如果由用戶自己或系統(tǒng)管理員而不是第三方安裝則是免費(fèi)的,第三方安裝則必須付許可費(fèi)。 d vrPv c!u7xSf) 1.2 MySQL服務(wù)安裝與配置 Y%+m& 這里將以MySQL源碼包在RedHat AS4上安裝配置來進(jìn)行講解,在其他操作系統(tǒng)上的源碼包安裝都與此類似。 m1n5> UE
3、;1.2.1 獲取MySQL R5w l<C1L 目前MySQL的最新穩(wěn)定發(fā)行版本是5.0.33,可以在其官方下載地址 8m='/6 注意:要找到頁面最下方的源碼包(Source downloads)Tarball (tar.gz) aN4h*aX 在這個(gè)頁面我們還可以看到許多其他為特定操作系統(tǒng)版本編譯好的MySQL安裝包,可以針對(duì)特定操作系統(tǒng)無需安裝直接運(yùn)行。 IxDX2g< ?!J_n;*" 1.2.2 安裝準(zhǔn)備工作 0EPXg.gK 首先要檢查操作系統(tǒng)是否安裝了所需要的軟件包,因?yàn)檫@里安
4、裝的的是源碼包因此要確認(rèn)是否操作系統(tǒng)是否安裝了C語言編譯環(huán)境(gcc, libgcc等) MwpaM W7 在命令行下以root身份查看是否正確安裝gcc ERe- b3t rootas4 /# rpm -aq|grep gcc 5qZmv3B gcc-objc-3.4.3-9.EL4 0hHM compat-libgcc-296-2.96-132.7.2 M5j>A1x compat-gcc-32-c+-3.2.3-47.3 F4$m/ libgcc-3.4.3-9.EL4 Xdd gcc-3.4.3-
5、9.EL4 53W b6 |-G3Ik 此外,還要防止操作系統(tǒng)原有的MySQL包對(duì)新安裝的MySQL造成影響,因此不要讓系統(tǒng)自帶的MySQL影響到新安裝的MySQL,首先要卸載系統(tǒng)自帶的MySQL(注意:一般來說RedHat的發(fā)行版中帶的MySQL都不是最新版本)。我們可以通過以下步驟卸載系統(tǒng)自帶的MySQL。 b+Q.uLK 1)rootas4 /# rpm -aq|grep mysql &pR$ >z< mysql-4.1.12-3.RHEL4.1 /x.l mysqlclient10-3.23.
6、58-4.RHEL4.1 8p8_RTi 2) rootas4 # rpm -e mysql-4.1.12-3.RHEL4.1 +w5ZiGO NJdKI;S 1.2.3 開始安裝 ?ZD&I 把獲得的MySQL源碼包mysql-5.0.33.tar.gz復(fù)制到/opt目錄下開始解壓 L6C|C*c rootas4 /# cd /opt/ .!Xps+s3 rootas4 opt# tar zxvf ./mysql-5.0.33.tar.gz y '"7n8Q 為MySQL創(chuàng)建獨(dú)立用戶
7、,一般來說這種獨(dú)立運(yùn)行的數(shù)據(jù)庫都要?jiǎng)?chuàng)建一個(gè)獨(dú)立的系統(tǒng)用戶,有些數(shù)據(jù)庫是必須要獨(dú)立系統(tǒng)用戶的。 bB>0yiTF rootas4 /# useradd mysql -d /opt/mysql-5.0. 33 N)fN.yz+ rootas4 /# chown -R mysql.mysql /opt/mysql-5.0. 33 /F<P-;z 創(chuàng)建2個(gè)重要目錄(數(shù)據(jù)和連接) ?>j4ftv= 數(shù)據(jù)目錄用于存放MySQL的所有數(shù)據(jù),而連接目錄是存放MySQL運(yùn)行時(shí)的socket文件 C!'gv rootas4 /#
8、 su mysql 先切換到mysql用戶 8mWwQ1_ mysqlas4 $ mkdir ./data kdKA N3 mysqlas4 $ mkdir ./tmp A 8V= l_W|Mx 開始預(yù)編譯 d6>0Rc_/ mysqlas4 $ ./configure -prefix=/opt/mysql-5.0.33 -localstatedir=/opt/mysql-5.0.33/data -with-unix-socket-path=/opt/mysql-5.0.33/tmp/mysql.sock -with-mysql
9、d-user=mysql -enable-large-files -with-big-tables -with-charset=utf8 -with-extra-charsets=latin1,latin2,latin5,latin7,gb2312,gbk #eV|P &? -prefix參數(shù)是指定mysql的安裝目錄 BlpU < -localstatedir是指定mysql數(shù)據(jù)的存放目錄 MfVh %rh;R -with-unix-socket-path是指定socket文件的存放路徑 P2p P|- -with-mysqld-
10、user是指定使用用戶 o;82"um0x 可以用configure help查看可以使用的所有參數(shù) d nY'!<5 h'?9>=Y 開始編譯 UidPZz mysqlas4 $ make s-jI:I 此過程相對(duì)來說會(huì)比較長,當(dāng)然也跟機(jī)器的硬件配置有關(guān) 1 G uQ-cAsv 開始安裝 :G Eir mysqlas4 $ make install djqN,6 此步驟完成后MySQL軟件就安裝到系統(tǒng)了,安裝過程與Windows下的安裝有些不同,由
11、于是源碼包安裝,因此很多參數(shù)都是要手工設(shè)置的 &)|: '$a hiLk3-hH 安裝完的重要設(shè)置 MEd<dsJ2y 進(jìn)行初始化數(shù)據(jù)操作 dGc_ssf mysqlas4$ ./scripts/mysql_install_db -datadir=/opt/mysql-5.0.33/data xCL!S+% 6;i%.- 此步驟創(chuàng)建2個(gè)系統(tǒng)初始數(shù)據(jù)庫:mysql和test "7Q;jD% YN<_J! !_ 1.3 管理MySQL 0 )jt1"n0
12、 在運(yùn)行數(shù)據(jù)庫系統(tǒng)時(shí), MySQL的使用相當(dāng)簡單,且進(jìn)行MySQL安裝和使用所需的工作也很少。MySQL的簡單性可能就是它極為普及的原因,尤其是在非程序員人群中的普及。當(dāng)然,它對(duì)于訓(xùn)練有素的計(jì)算機(jī)專業(yè)人員也是有幫助的,但肯定不是對(duì)運(yùn)行一個(gè)成功的MySQL安裝程序的需求。 h)es=ryn7 如果有管理其他數(shù)據(jù)庫系統(tǒng)的經(jīng)驗(yàn),將會(huì)發(fā)現(xiàn):運(yùn)行MySQL的安裝程序在某些方面是類似的,您的經(jīng)驗(yàn)也是用得著的。但是MySQL的管理有自己獨(dú)特的需求,本書的這個(gè)部分將幫助您熟悉這些內(nèi)容。 t/*G$,t; wFZ)1(O' 管理職責(zé)概述 lb9J"
13、4b6< XKYR J MySQL數(shù)據(jù)庫系統(tǒng)由幾部分組成。您應(yīng)該熟悉這些組成部分的內(nèi)容和每個(gè)部分的目的。這需要您了解所管理系統(tǒng)的特征以及幫助您進(jìn)行管理的可用工具。如果您花時(shí)間去了解了要監(jiān)督的內(nèi)容,工作將會(huì)變得非常容易。為此,您應(yīng)當(dāng)使自己熟悉MySQL的以下幾個(gè)方面: 5$n!pz MySQL服務(wù)器。服務(wù)器mysql執(zhí)行數(shù)據(jù)庫和表的所有操作。safe_mysqld 是一個(gè)相關(guān)的程序,它用于啟動(dòng)服務(wù)器、監(jiān)控服務(wù)器和重新啟動(dòng)服務(wù)器。 c,4*e*s|X MySQL客戶機(jī)和實(shí)用程序。有幾個(gè)MySQL程序,可用來幫助您與服務(wù)器進(jìn)行通信和執(zhí)行管理的任務(wù)
14、。其中最重要的幾個(gè)是: 9mo+5c= mysql,一個(gè)交互式程序,允許將SQL 語句發(fā)布到服務(wù)器上并瀏覽其結(jié)果。 xARJIK0> mysqladmin,一個(gè)管理程序,允許執(zhí)行諸如關(guān)閉服務(wù)器以及創(chuàng)建或刪除數(shù)據(jù)庫的工作。如果服務(wù)器運(yùn)行不正常,還可以用mysqladmin 來檢查服務(wù)器的狀態(tài)。 CDcVu|M isamchk 和my i s a m c h k,這些實(shí)用程序幫助您完成表的分析和優(yōu)化,以及在表損壞時(shí)進(jìn)行崩潰恢復(fù)。 ZI$2$+ mysqldump,一個(gè)工具,用于備份數(shù)據(jù)庫或?qū)?shù)據(jù)庫拷貝到另一個(gè)服務(wù)器中。 k "+_9F
15、S 服務(wù)器的語言,SQL。有些管理職責(zé)只能用mysqladmin 的命令行實(shí)用程序來完成,但是,如果還能用服務(wù)器自己的語言來同服務(wù)器進(jìn)行對(duì)話,那就更好了。沒有任何替代品能夠參與并與服務(wù)器直接通信??赏ㄟ^使用mysql客戶機(jī)程序發(fā)布能夠檢驗(yàn)授權(quán)表的SQL 查詢來做到這一點(diǎn)。如果MySQL版本還未引入GRANT 語句,則需要使用mysql首先設(shè)置每個(gè)用戶的權(quán)限。 <tjh48 如果不知道SQL 的任何內(nèi)容,至少必須對(duì)SQL要有基本的了解。缺乏對(duì)SQL 的熟悉只會(huì)帶來困惑,而在學(xué)習(xí)SQL 上所花費(fèi)的時(shí)間將會(huì)得到成倍的回報(bào)。真正掌握SQL 要花費(fèi)一些時(shí)間,但掌握基本技能則
16、很快。 wFRzg9 MySQL數(shù)據(jù)目錄。數(shù)據(jù)目錄是服務(wù)器存儲(chǔ)其數(shù)據(jù)庫和狀態(tài)文件的所在。了解數(shù)據(jù)目錄的結(jié)構(gòu)及內(nèi)容是很重要的,您可以知道服務(wù)器是怎樣使用文件系統(tǒng)來表現(xiàn)數(shù)據(jù)庫和表的,以及像日志這樣的文件的存放位置和其內(nèi)容。還應(yīng)該了解在文件系統(tǒng)中管理磁盤空間分配的選項(xiàng),當(dāng)發(fā)現(xiàn)放置數(shù)據(jù)目錄的文件系統(tǒng)過滿時(shí)可以進(jìn)行調(diào)整。 ,_KyJI GjdGx 常規(guī)管理 bUnx5 U/kT< 常規(guī)管理主要指處理mysqld、MySQL服務(wù)器和提供給用戶的訪問服務(wù)器的操作。在履行該職責(zé)時(shí),下列的任務(wù)是最重要的: O1x$A>93 服務(wù)
17、器的啟動(dòng)和關(guān)閉。應(yīng)該能夠從命令行中手工啟動(dòng)和終止服務(wù)器,并且在系統(tǒng)啟動(dòng)和關(guān)閉時(shí)知道怎樣進(jìn)行自動(dòng)啟動(dòng)和關(guān)閉。如果服務(wù)器崩潰了或啟動(dòng)不正常的話,了解怎樣使服務(wù)器再次運(yùn)行也是重要的。 ubFg&<6 - 用戶賬號(hào)維護(hù)。應(yīng)該了解MySQL用戶和UNIX 或Windows 用戶之間的區(qū)別。應(yīng)該知道怎樣通過指定哪些用戶可以連接到服務(wù)器和從哪里進(jìn)行連接來建立MySQL用戶賬號(hào)。還應(yīng)該給新的用戶建議合適的連接參數(shù),以使他們成功地連接到服務(wù)器。弄清應(yīng)怎樣建立賬號(hào)不是用戶們的工作。 +w.Ls 日志文件維護(hù)。應(yīng)該了解可以維護(hù)的日志文件的類型,以及在何時(shí)和怎樣完成日志文件的維護(hù)
18、。日志的循環(huán)和終止對(duì)于防止日志填滿文件系統(tǒng)是必要的。 sMUz8UR 數(shù)據(jù)庫備份和拷貝。數(shù)據(jù)庫備份對(duì)服務(wù)器系統(tǒng)的崩潰是至關(guān)重要的。應(yīng)該能夠?qū)?shù)據(jù)庫恢復(fù)到崩潰時(shí)的狀態(tài),以便盡可能地減少數(shù)據(jù)的丟失。請(qǐng)注意,數(shù)據(jù)庫備份與常規(guī)的系統(tǒng)備份不同,例如,可通過使用UNIX 的dump 程序來進(jìn)行。與數(shù)據(jù)庫表相對(duì)應(yīng)的文件在系統(tǒng)備份發(fā)生時(shí)隨服務(wù)器活動(dòng)而變化,因此恢復(fù)那些文件將使您的表內(nèi)部不一致。mysqldump 程序?qū)a(chǎn)生對(duì)恢復(fù)數(shù)據(jù)庫更有用的備份文件,并允許在不關(guān)閉服務(wù)器的狀態(tài)下創(chuàng)建備份。 , +47 如果決定在更快的主機(jī)上運(yùn)行數(shù)據(jù)庫,或者想復(fù)制數(shù)據(jù)庫,則需要拷貝其內(nèi)容到另一臺(tái)機(jī)器上。
19、如果需要的話,應(yīng)該了解進(jìn)行這項(xiàng)操作的過程。數(shù)據(jù)庫文件是依賴于系統(tǒng)的,因此您不能只拷貝這些文件。 MJ-! 服務(wù)器優(yōu)化。用戶想要服務(wù)器以最佳狀態(tài)運(yùn)行。提高服務(wù)器運(yùn)行性能的最簡單方法是購買更多的內(nèi)存或使磁盤速度更快。但是,這種直截了當(dāng)?shù)募夹g(shù)并不能代替對(duì)服務(wù)器工作的了解。應(yīng)該了解優(yōu)化服務(wù)器操作所用的參數(shù)以及如何將這些參數(shù)應(yīng)用在您的環(huán)境中。在某些站點(diǎn)中,大多數(shù)查詢都是檢索。而在另一些站點(diǎn),插入和更新操作占據(jù)著優(yōu)勢。選擇對(duì)哪些參數(shù)進(jìn)行修改將受到站點(diǎn)查詢的影響。 8 ywbr1 多服務(wù)器。在某些環(huán)境中運(yùn)行多服務(wù)器是有用的。如果保留當(dāng)前的成品安裝程序在適當(dāng)?shù)奈恢?,或者為不同的用戶組提
20、供較好的保密性(后者與ISP 尤其相關(guān)),則可以測試新的MySQL版本。對(duì)于這些情形,您應(yīng)該了解怎樣建立多個(gè)同時(shí)發(fā)生的安裝。 :(< :8$ MySQL更新。由于新的MySQL版本頻繁出現(xiàn),應(yīng)該知道怎樣始終跟上這些版本以便利用故障修復(fù)和新的特性。需要了解不進(jìn)行版本升級(jí)的理由,并且掌握怎樣在穩(wěn)定版本和開發(fā)者版本之間進(jìn)行選擇。 9f"p<% 1.3.1 啟動(dòng)MySQL uW*,1 : mysqlas4 /$ ./bin/mysqld_safe -no-defaults & eyMO#%N 1) -no-defaults
21、參數(shù)是不使用默認(rèn)值,默認(rèn)設(shè)置的數(shù)據(jù)庫文件是存放在/var目錄下 *B ?0B6 2)&是后臺(tái)運(yùn)行 FFi9 o R2B mJ kYj$B 1.3.2 停止MySQL *>Kr#hP mysqlas4 $ mysqladmin shutdown -u root p lSIX|2 -u 是指定用戶 IcBEfMf -p 是指定密碼 !Sh|=.%X FDKRx 在本機(jī)命令行下進(jìn)入MySQL 6DxhO/+d mysqlas4 $ mysql b/1,& xY
22、 Welcome to the MySQL monitor. Commands end with ; or g. LTn0t4f Your MySQL connection id is 2 to server version: 5.0.33 ZS$rS:" Type 'help;' or 'h' for help. Type 'c' to clear the buffer. $(/Q=fzv mysql> AoVs u- 1.3.3 MySQL用戶管理 _ZbR5b
23、160;MySQL安裝好后默認(rèn)的管理員帳號(hào)也是root(與OS的帳號(hào)名一樣),而密碼是空,但是只能從本機(jī)訪問,該默認(rèn)帳號(hào)可以被刪除和修改。 A&23 *8|ej4 一、新增MySQL用戶 9p|W 格式:grant select on 數(shù)據(jù)庫.* to 用戶名登錄主機(jī) identified by "密碼" = '0Wo 例1、增加一個(gè)用戶test1密碼為abc,讓他可以在任何主機(jī)上登錄,并對(duì)所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權(quán)限。首先用以root用戶連入MYSQL,然后鍵入以下命令: w, V;6lX
24、60;grant select,insert,update,delete on *.* to test1"%" Identified by "abc" UbJ/ou 但例1增加的用戶是十分危險(xiǎn)的,如果某人知道test1的密碼,那么他就可以在internet上的任何一臺(tái)電腦上登錄這臺(tái)mysql數(shù)據(jù)庫并對(duì)數(shù)據(jù)可以為所欲為了,解決辦法見例1。 <UyqT O 例1、增加一個(gè)用戶test2密碼為abc,使其只可以在localhost上登錄,并可以對(duì)數(shù)據(jù)庫mydb進(jìn)行查詢、插入、修改、刪除的操作(localhost指本地主機(jī),即MYS
25、QL數(shù)據(jù)庫所在的那臺(tái)主機(jī)),這樣用戶即使用知道test2的密碼,也無法從internet上直接訪問數(shù)據(jù)庫,只能通過MySQL主機(jī)上的web頁來訪問了。 4r5O! 4y grant select,insert,update,delete on mydb.* to test2localhost identified by "abc" KbE=* r( 如果你不想test2有密碼,可以再打一個(gè)命令將密碼消掉。 o(V4f,TYjB grant select,insert,update,delete on mydb.* to test2loca
26、lhost identified by "" DmM/t)4 二、修改MySQL用戶的方法,這里講兩種方法 pz?7QmW 1) 以root登陸后直接用SQL語句修改系統(tǒng)庫mysql中的user表 0A"<5A mysqlas4 mysql$ mysql -u root p(在命令行下用root身份進(jìn)入MySQL) :F.,5 n>= mysql> use mysql; (選擇系統(tǒng)數(shù)據(jù)庫) A'$uq S mysql> update user set password=pa
27、ssword('654321') where user='root' (將root用戶的密碼改成654321,注意要加函數(shù)password(),因?yàn)閙ysql中密碼是采用MD5算法進(jìn)行加密的,如果不用該函數(shù)密碼將以明文存儲(chǔ),這樣在登陸的時(shí)候系統(tǒng)把654321用MD5算法一計(jì)算后就跟表user中存出的654321密碼不一致了,這樣你就登陸不了了) +GLt!.60 mysql> flush privileges; (提交你的修改請(qǐng)求) T/w;4sSi/Z KI,f,9xuX 2) 直接在bash shell命令行下用my
28、sqladmin這個(gè)命令修改 aJ6"II mysqlas4 mysql$ mysqladmin -u root -p654321 password 123456 OG$fmZ%|D& (將來root用戶的密碼從654321修改為123456) =*p#FM ZQVw&+2 J|Qxva 添加一個(gè)遠(yuǎn)程管理MySQL的用戶 Um ?_wT# mysqlas4 $ mysql c$<O mysql> grant all privileges on *.* to mysql
29、9;192.168.0.0/255.255.0.0' identified by 'mysql' bzshT);Ns mysql> q Q9FUQ64 以上命令可以添加一個(gè)可以從192.168.0.0/16IP段訪問MySQL服務(wù)器上所有數(shù)據(jù)庫的用戶,其中帳號(hào)是mysql,口令是mysql KQs:Y.S rakT Dg 三、常用命令行操作 d( $Ruy 1 顯示命令 Q=Yk!R%Li 1)顯示數(shù)據(jù)庫列表。 0me6:YiK show databases; G;&6jU
30、H: 剛開始時(shí)才兩個(gè)數(shù)據(jù)庫:mysql和test。mysql庫很重要它里面有MYSQL的系統(tǒng)信息,我們改密碼和新增用戶,實(shí)際上就是用這個(gè)庫進(jìn)行操作。 /QgJWcnOm 2)顯示庫中的數(shù)據(jù)表: *l1 _v!P use mysql; /打開庫,學(xué)過FOXBASE的一定不會(huì)陌生吧 |nv) show tables; uv? -O( 3)顯示數(shù)據(jù)表的結(jié)構(gòu): &o&LbC)m describe 表名; L j7MrOa 4)顯示表中的記錄: Bq
31、1B.L2?7 select * from 表名; I7YfxKch 2 創(chuàng)建/刪除命令 s9Nm16> 1) 建庫: $0H,3,k create database 庫名; IM?=g 2) 建表: q$&j#g use 庫名; IG6P.m6 create table 表名 (字段設(shè)定列表); +Z!0oi 3) 刪庫和刪表: ?INZ)PF6& drop database 庫名; 4Bqkv drop table 表名;
32、 W 9bUu0 4) 將表中記錄清空: n$,$Xg1jq delete from 表名; <%60c7u k KM.sWOc 3 一個(gè)建庫和建表以及插入數(shù)據(jù)的實(shí)例 : M5 drop database if exists book; /如果存在book庫則刪除 lh$lR G=g create database book; /建立庫book cAX0kqRVI use book; /打開庫book kfMKsp='m create tabl
33、e storybook /建立表storybook |DZh6 ( -H:O # id int(3) auto_increment not null primary key, zOl$UF0T5 name char(10) not null, ?!C9SOk author varchar(50) default '張三', 7+KoKWv2 public_date date )7,"bVL ); /建表結(jié)束 AD49 Q
34、60;/以下為插入字段 >>dtn"> insert into storybook values('','MySQL數(shù)據(jù)庫優(yōu)化','李四','2006-12-15'); x(jrWRZ insert into storybook values('','精通PostgreSQL數(shù)據(jù)庫','王五','2006-09-11'); dEDn>5Sc TJ|+<R 注:在建表中
35、 E Q|J'1K (1)將id設(shè)為長度為3的數(shù)字字段:int(3)并讓它每個(gè)記錄自動(dòng)加一:auto_increment并不能為空:not null而且讓他成為主字段primary key EfI= kYE (2)將name設(shè)為長度為10的字符字段 7h00Beg (3)將author設(shè)為長度50的字符字段,而且缺省值為張三。varchar和char有什么區(qū)別呢,簡單說,varchar是不固定長度的字符串,char是固定長度的字符串。 0SU (4)將public_date設(shè)為日期字段。 3?jpd* 如果在mysql提示符鍵
36、入上面的命令也可以,但不方便調(diào)試。可以將以上命令原樣寫入一個(gè)文本文件中假設(shè)為book.sql,然后復(fù)制到/tmp下,并在命令行狀態(tài)進(jìn)入目錄mysql/bin,然后鍵入以下命令: +'g?BJB mysql u root -p密碼 < /tmp/book.sql Z<6W 如果成功,空出一行無任何顯示;如有錯(cuò)誤,會(huì)有提示。 Z/DF*f T< FCy,w 4 將文本數(shù)據(jù)轉(zhuǎn)到數(shù)據(jù)庫中 EDbj$L 1) 文本數(shù)據(jù)應(yīng)符合的格式:字段數(shù)據(jù)之間用tab鍵隔開,null值用n來代替. M*4|i
37、;例: (G31j(mA5 5 Linux基礎(chǔ)教程 王五 2006-12-21 3 .Z=AD 6 Linux中級(jí)教材 張三 2006-12-11 k6ugN$W-z 2) 數(shù)據(jù)傳入命令 |WXB'G/ use book; 9 (!JJ;y SELECT * FROM storybook INTO OUTFILE '/tmp/myfile_name' $2%4 Qu# 恢復(fù)的方法: 790
38、|73Z USE book; uZ+qAw& LOAD DATA INFILE '/tmp/myfile_name ' INTO TABLE book; .eG8LD1 K 注:該導(dǎo)出/導(dǎo)入方法僅僅是操作表中的數(shù)據(jù),并且導(dǎo)出表的導(dǎo)入表的字段個(gè)數(shù)和類型必須完全一樣。 JmN,N/ 5T+< D<n', 四、導(dǎo)出/導(dǎo)入數(shù)據(jù) |!y771 除了用mysqldum
39、p來導(dǎo)出MySQL數(shù)據(jù),還可以用 SQL 語法進(jìn)行備份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者備份二進(jìn)制日志(binlog),還可以是直接拷貝數(shù)據(jù)文件和相關(guān)的配置文件。MyISAM 表是保存成文件的形式,因此相對(duì)比較容易備份,上面提到的幾種方法都可以使用。Innodb 所有的表都保存在同一個(gè)數(shù)據(jù)文件 ibdata1 中(也可能是多個(gè)文件,或者是獨(dú)立的表空間文件),相對(duì)來說比較不好備份,開源的方案可以是拷貝數(shù)據(jù)文件、備份 binlog,或者用 mysqldump。 q'x#GV4B 1) 導(dǎo)出 VFX ;tU mysqldu
40、mp 是采用SQL級(jí)別的備份機(jī)制,它將數(shù)據(jù)表導(dǎo)成 SQL 腳本文件,在不同的 MySQL 版本之間升級(jí)時(shí)相對(duì)比較合適,這也是最常用的備份方法。 gVznFL2y 現(xiàn)在來講一下 mysqldump 的一些主要參數(shù): ;t|Kw-n -compatible=name ;:f)o=u 它告訴 mysqldump,導(dǎo)出的數(shù)據(jù)將和哪種數(shù)據(jù)庫或哪個(gè)舊版本的 MySQL 服務(wù)器相兼容。值可以為 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、n
41、o_field_options 等,要使用幾個(gè)值,用逗號(hào)將它們隔開。當(dāng)然了,它并不保證能完全兼容,而是盡量兼容。 Pe vt% p g -complete-insert,-c kl | 導(dǎo)出的數(shù)據(jù)采用包含字段名的完整 INSERT 方式,也就是把所有的值都寫在一行。這么做能提高插入效率,但是可能會(huì)受到 max_allowed_packet 參數(shù)的影響而導(dǎo)致插入失敗。因此,需要謹(jǐn)慎使用該參數(shù),至少我不推薦。 3<iB" I;New -default-character-set=charset /?.6/y6
42、指定導(dǎo)出數(shù)據(jù)時(shí)采用何種字符集,如果數(shù)據(jù)表不是采用默認(rèn)的 latin1 字符集的話,那么導(dǎo)出時(shí)必須指定該選項(xiàng),否則再次導(dǎo)入數(shù)據(jù)后將產(chǎn)生亂碼問題。 c=Q0?p x'u0uCc -disable-keys ErM4HR> 告訴 mysqldump 在 INSERT 語句的開頭和結(jié)尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 語句,這能大大提高插入語句的速度,因?yàn)樗窃诓迦胪晁袛?shù)據(jù)后才重建索引的。該選項(xiàng)只適合
43、MyISAM 表。 '8KZ c _HU1R2+kb -extended-insert = true|false !tU$Ly7 默認(rèn)情況下,mysqldump 開啟 -complete-insert 模式,因此不想用它的的話,就使用本選項(xiàng),設(shè)定它的值為 false 即可。 Bi Z*l bt2Z( , -hex-blob ?DMe 使用十六進(jìn)制格式導(dǎo)出二進(jìn)制字符串字段。如果有二進(jìn)制數(shù)據(jù)就必須使用本選項(xiàng)。影響到的字段類型有 BINARY、VARBINARY、BLOB。 !0 x5$lp e;j Id &
44、#160;-lock-all-tables,-x GZsO!OoT# 在開始導(dǎo)出之前,提交請(qǐng)求鎖定所有數(shù)據(jù)庫中的所有表,以保證數(shù)據(jù)的一致性。這是一個(gè)全局讀鎖,并且自動(dòng)關(guān)閉 -single-transaction 和 -lock-tables 選項(xiàng)。 *sSFvHT (v7c| -lock-tables 22qdkd3 它和 -lock-all-tables 類似,不過是鎖定當(dāng)前導(dǎo)出的數(shù)據(jù)表,而不是一下子鎖定全部庫下的表。本選項(xiàng)只適用于 MyISAM 表,如果是 Innodb 表可以用 -single-transaction 選項(xiàng)。 Vk*q&am
45、p; *?# y. -no-create-info,-t T!<+0 只導(dǎo)出數(shù)據(jù),而不添加 CREATE TABLE 語句。 hYi+GwC T#:aK4X% -no-data,-d e)gAptL 不導(dǎo)出任何數(shù)據(jù),只導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu)。 Xz0JVeaQ =) n;nm -opt Fk.I 這只是一個(gè)快捷選項(xiàng),等同于同時(shí)添加 -add-drop-tables -add-locking -create-option -disable-keys -extended-insert -lo
46、ck-tables -quick -set-charset 選項(xiàng)。本選項(xiàng)能讓 mysqldump 很快的導(dǎo)出數(shù)據(jù),并且導(dǎo)出的數(shù)據(jù)能很快導(dǎo)回。該選項(xiàng)默認(rèn)開啟,但可以用 -skip-opt 禁用。注意,如果運(yùn)行 mysqldump 沒有指定 -quick 或 -opt 選項(xiàng),則會(huì)將整個(gè)結(jié)果集放在內(nèi)存中。如果導(dǎo)出大數(shù)據(jù)庫的話可能會(huì)出現(xiàn)問題。 4SNI(g Rv N -quick,-q SDW!. 該選項(xiàng)在導(dǎo)出大表時(shí)很有用,它強(qiáng)制 mysqldump 從服務(wù)器查詢?nèi)〉糜涗浿苯虞敵龆皇侨〉盟杏涗浐髮⑺鼈兙彺娴絻?nèi)存中。 aNb?d lGl#7
47、;-routines,-R isU c5 導(dǎo)出存儲(chǔ)過程以及自定義函數(shù)。 Vc2Vyab Sw %CT! -single-transaction WT<xuJDh = 該選項(xiàng)在導(dǎo)出數(shù)據(jù)之前提交一個(gè) BEGIN SQL語句,BEGIN 不會(huì)阻塞任何應(yīng)用程序且能保證導(dǎo)出時(shí)數(shù)據(jù)庫的一致性狀態(tài)。它只適用于事務(wù)表,例如 InnoDB 和 BDB。 SrTAT+U*ec 本選項(xiàng)和 -lock-tables 選項(xiàng)是互斥的,因?yàn)?LOCK TABLES 會(huì)使任何掛起的事務(wù)隱含提交。 GR?jd: 要想導(dǎo)出大表的話,應(yīng)結(jié)合使用 -qui
48、ck 選項(xiàng)。 sHQ_I79HW !_fAx8<w -triggers Ok8k, 同時(shí)導(dǎo)出觸發(fā)器。該選項(xiàng)默認(rèn)啟用,用 -skip-triggers 禁用它。 Px ifgXbA vyX/" 其他參數(shù)詳情請(qǐng)參考手冊(cè),通常使用以下 SQL 來備份 MyISAM 表: rz.V C ,l! -dg/x /usr/local/mysql/bin/mysqldump -uyejr -pyejr T(p '| -default-character-set=utf8 -opt -exte
49、nded-insert=false QbUjB>l -triggers -R -hex-blob -x db_name > db_name.sql +/F;d 使用以下 SQL 來備份 Innodb 表: V:oe?/X8 #gI,bNMt /usr/local/mysql/bin/mysqldump -uyejr -pyejr 'W&ANd_ -default-character-set=utf8 -opt -extended-insert=false #gs|k,yJ -triggers -
50、R -hex-blob -single-transaction db_name > db_name.sql M> wP 另外,如果想要實(shí)現(xiàn)在線備份,還可以使用 -master-data 參數(shù)來實(shí)現(xiàn),如下: ;3-)Kn:y HkWP%a /usr/local/mysql/bin/mysqldump -umyuser -pmypasswd 3bE#|w, -default-character-set=utf8 -opt -master-data=1 gj* -single-transaction -flush-logs db
51、_name > db_name.sql ih& 它只是在一開始的瞬間請(qǐng)求鎖表,然后就刷新binlog了,而后在導(dǎo)出的文件中加入CHANGE MASTER 語句來指定當(dāng)前備份的binlog位置,如果要把這個(gè)文件恢復(fù)到slave里去,就可以采用這種方法來做。 +/WhP Z *x=PD% 2)導(dǎo)入 | ,.5%D 用mysqldump 備份出來的文件是一個(gè)可以直接倒入的 SQL 腳本,有兩種方法可以將數(shù)據(jù)導(dǎo)入。 tGi4Gl 直接用 mysql 客戶端 ?sAjF3) 例如: =Lb/w m /usr
52、/local/mysql/bin/mysql -umyuser -pmypasswd db_name < db_name.sql ;p )Si4 LIn3 用 SOURCE 語法 k I,w* 其實(shí)這不是標(biāo)準(zhǔn)的 SQL 語法,而是 mysql 客戶端提供的功能,例如: gt<SNA Xfdw"M0Y7 SOURCE /tmp/db_name.sql; BdV ajM5 這里需要指定文件的絕對(duì)路徑,并且必須是 mysqld 運(yùn)行用戶(例如 nobody)有權(quán)限讀取的文件。 r7/AL + D
53、V >F 3)SQL 語法備份 c;oNTvM_ (1)備份 Hifgg,EGW BACKUP TABLE 語法其實(shí)和 mysqlhotcopy 的工作原理差不多,都是鎖表,然后拷貝數(shù)據(jù)文件。它能實(shí)現(xiàn)在線備份,但是效果不理想,因此不推薦使用。它只拷貝表結(jié)構(gòu)文件和數(shù)據(jù)文件,不同時(shí)拷貝索引文件,因此恢復(fù)時(shí)比較慢。 4s1lnU 例子: B2'3zd(6 j;6X3uz BACK TABLE tbl_name TO '/tmp/db_name/' fctdZ_Jw 注意,必須要有 FIL
54、E 權(quán)限才能執(zhí)行本SQL,并且目錄 /tmp/db_name/ 必須能被 mysqld 用戶可寫,導(dǎo)出的文件不能覆蓋已經(jīng)存在的文件,以避免安全問題。 d .& Kh K I6TNO#SzS SELECT INTO OUTFILE 則是把數(shù)據(jù)導(dǎo)出來成為普通的文本文件,可以自定義字段間隔的方式,方便處理這些數(shù)據(jù)。 y?H=P|yp 例子: L?d_xY 88T|HS2 SELECT * INTO OUTFILE '/tmp/db_name/tbl_name.txt' FROM tbl_name; DE * 3.)
55、 注意,必須要有 FILE 權(quán)限才能執(zhí)行本SQL,并且文件 /tmp/db_name/tbl_name.txt 必須能被 mysqld 用戶可寫,導(dǎo)出的文件不能覆蓋已經(jīng)存在的文件,以避免安全問題。 #R tR.x+P fwyo32 (2)恢復(fù) m-H6&| 用 BACKUP TABLE 方法備份出來的文件,可以運(yùn)行 RESTORE TABLE 語句來恢復(fù)數(shù)據(jù)表。 S*8A!| 例子: TCS82 Fzw?WrO RESTORE TABLE FROM '/tmp/db_name/' z&qu
56、ot;Z|Wr7 權(quán)限要求類似上面所述。 zF*>!;! IPJ dA 用 SELECT INTO OUTFILE 方法備份出來的文件,可以運(yùn)行 LOAD DATA INFILE 語句來恢復(fù)數(shù)據(jù)表。 NaLJl7d 例子: S |-( D >FEn7a> LOAD DATA INFILE '/tmp/db_name/tbl_name.txt' INTO TABLE tbl_name; Ne4=A 權(quán)限要求類似上面所述。倒入數(shù)據(jù)之前,數(shù)據(jù)表要已經(jīng)存在才行。如果擔(dān)心數(shù)據(jù)會(huì)發(fā)生重復(fù),
57、可以增加 REPLACE 關(guān)鍵字來替換已有記錄或者用 IGNORE 關(guān)鍵字來忽略他們。 ;(Ej8)mM LfbIQ B MO(m3o 4)簡易導(dǎo)入導(dǎo)出方法 7%)hg (1)導(dǎo)出數(shù)據(jù)庫:(命令在mysql/bin目錄下) vL f mysqldump -opt book>book.bak /沒有設(shè)置密碼的時(shí)候 U3Nmy):1 mysqldump -u root p123456 -opt book > book.bak /密碼被設(shè)置為123456的時(shí)候 &>DW3Y77 mysqld
58、ump -opt book storybook magazine > /tmp/book.storybook.magazine.sql -:V + 注釋:將數(shù)據(jù)庫book中的storybook表和magazine表備份到/tmp/book.storybook.magazine.sql文件,book.storybook.magazine.sql是一個(gè)文本文件,文件名任取,打開看看會(huì)有新發(fā)現(xiàn)。 UDf;pi" 備份的另外一種方法:(要有操作相應(yīng)文件的權(quán)限。) T% &+% +O* (2)從導(dǎo)出文件導(dǎo)入數(shù)據(jù): &a
59、mp;lZfa% 導(dǎo)入數(shù)據(jù)表 | fL?ed mysql>source book.storybook.magazine.sql; ,E7mnP-MJ 導(dǎo)入數(shù)據(jù)庫 *F0U.j"6 shell> mysqladmin -h localhost -u root -p123 create target_db_name tc( %|l shell> mysql -h localhost -u root -p123 target_db_name < 文件名 FPiH oFND
60、60;(xS+WXKv 注釋:將數(shù)據(jù)庫book備份到book.bak文件,book.bak是一個(gè)文本文件,文件名任取,打開看看會(huì)有新發(fā)現(xiàn)。 6o04N1<_, qHKj*u 5)備份/恢復(fù)數(shù)據(jù)表 5rWy"8fW8 (1)備份 G8/s2 mysqlas4 $ mysqldump -u root -p -opt test storybook > /tmp/my1.bak pUG-D?p+ :%jf;f 此命令是以root身份把test數(shù)據(jù)庫中的storybook表結(jié)構(gòu)和記錄備份到/tmp/
61、my1.bak V24g|w ?!P,:/ ) (2)恢復(fù) J'3hm2|+ mysqlas4 $ mysql -u root -p test < /tmp/my1.bak _ n8um4 F.g2/0. 把剛才備份的storybook表結(jié)構(gòu)和記錄文件my1.bak恢復(fù)到test數(shù)據(jù)庫中,表名還是storybook It1Fd' jdP+ 注:如果恢復(fù)的時(shí)候是先將庫中的表刪除,然后在把表文件復(fù)制成表,存入數(shù)據(jù)庫 i%r6jZ%t 1.3.4 開機(jī)自動(dòng)啟動(dòng)MySQL方法 S iu
62、 一、加到開機(jī)自動(dòng)執(zhí)行文件中 +BzR7Z rootas4 /# vi /etc/rc.d/rc.local _=& 添加一行 _)I,hP su - mysql -c "/opt/mysql-5.0.33/bin/mysqld_safe -no-defaults &" ;u0f*JqC 先切換成mysql用戶身份,然后在啟動(dòng)MySQL服務(wù)。 ,89XD TS_ An> yN 二、把MySQL作為系統(tǒng)的一個(gè)服務(wù) u2tjo> 先編輯一個(gè)mysql服務(wù)文
63、件mysql5 K.:?k 把mysql5文件復(fù)制到/etc/rc.d/init.d/,并增加可執(zhí)行權(quán)限。 YJ' _d% rootas4 /# chmod 755 /etc/init.d/mysql5 -ZG34wXOn 把mysql5添加到服務(wù)列表 A10o?#ad rootas4 /# chkconfig -add mysql5 TJ)9kOwx 然后選擇讓mysql5在開機(jī)的時(shí)候自動(dòng)啟動(dòng) 5*YWsFxEr rootas4 /# chkconfig -level 3 mysql5 on UyAYX
64、0;AO mq?& MySQL作為系統(tǒng)服務(wù)的啟動(dòng)腳本 G:8RNP rootas4 # vi /etc/init.d/mysql5 eom <>jn4 #!/bin/bash SXi(B;aX # + Zu # Startup script for the MySQL 5.0.33 Server d qeW( ( # Ulm#<g0l # chkconfig: - 92 27 *3bgo5H. # description: MySQL server. ZaPXD*&
65、 F/u0jBL # processname: mysql5 1z/2Y>: export MYSQL_BASE=/opt/mysql-5.0.33 )! 'OP,( PROFILEDIR=/var/run/mysql +X&?/_+p<s t"Amj= start() /#zRf, if -f $PROFILEDIR/MYSQL_PID ; then 3mEg C echo "MySQL Server has been R
66、unning!" 8K&s6ow else 4q;A|EJa if -f $MYSQL_BASE/bin/mysqld_safe ; then F aAuNign+ su - mysql -c "$MYSQL_BASE/bin/mysqld_safe -defaults-file=$MYSQL_BASE/f >/dev/null 2>&1 &" l7H;_vLO sleep 3 s6Gsx?DWV &
67、#160; head -n 1 $MYSQL_BASE/data/as4.pid >$PROFILEDIR/MYSQL_PID tX0 echo "Startting MySQL" bG0zdh kK else %1GjR'g echo "MySQL File Not Founds" 8s;Vu"7 fi rSfa'Fl fi <+4|u 1d9.
68、;41P stop() TxCNiUU if -f $PROFILEDIR/MYSQL_PID ; then GPyE.) # Stop the MySQL Server 5.0.33 pd tiP su - mysql -c "rm -f $PROFILEDIR/MYSQL_PID;$MYSQL_BASE/bin/mysqladmin shutdown -u root -S $MYSQL_BASE/tmp/mysql.sock;" 9=eev: echo "St
69、opping MySQL" fF7rE'nO else S/H$Zq echo "Not Running MySQL" =8idy)3 fi <"F"p=*/U ?ka,r r ,3&8qf;<v restart() 2d1*2>X> if -f $PROFILEDIR/MYSQL_PID ; then +5S Gu$X6 # Restart the MySQL Server ZT
70、_1 OW stop j8Nn&-9 start -u</ 6J else sRMYjEs echo "Not Running MySQL" F-i$p fi LrApz0;m :XS"J1" case "$1" in 8K898$OS 'start') hf4OOW9A" # Start the MySQL Server 5.0.33 .obuk start MTT
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。