MySQL數(shù)據(jù)庫(kù)培訓(xùn)資料_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)培訓(xùn)資料_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)培訓(xùn)資料_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)培訓(xùn)資料_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)培訓(xùn)資料_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、12Mysql簡(jiǎn)介Mysql數(shù)據(jù)庫(kù)簡(jiǎn)介Mysql常用操作Mysql管理維護(hù)Mysql數(shù)據(jù)庫(kù)特點(diǎn)越來(lái)越多的企業(yè)級(jí)特性Mysql數(shù)據(jù)庫(kù)安裝Mysql連接工具M(jìn)ysql體系結(jié)構(gòu)表引擎字符集問(wèn)題常用數(shù)據(jù)類(lèi)型常用Sql語(yǔ)句數(shù)據(jù)庫(kù)備份數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)庫(kù)維護(hù)與修復(fù)用戶(hù)權(quán)限管理數(shù)據(jù)庫(kù)安全加固34常用的數(shù)據(jù)庫(kù)服務(wù)器: 商業(yè):oracle, SQLserver,DB2 開(kāi)源:MySQL,postgreSQL,SQLiteMySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典MySQL AB公司。在2008年1月16號(hào)被Sun公司收購(gòu)。而2009年,SUN又被Oracle收購(gòu),對(duì)于Mysql的前途,沒(méi)有任何人抱樂(lè)觀的

2、態(tài)度.目前 MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng) 站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。分標(biāo)準(zhǔn)版和企業(yè)版本,企業(yè)版本提供Enterprise Monitor工具,目前版本已經(jīng)到達(dá)MySQL6。5開(kāi)放源代碼小巧易用高性能低成本(是ORACLE價(jià)格的1/10)高可靠高速發(fā)展的數(shù)據(jù)庫(kù)幾乎支持所有的平臺(tái)廣泛應(yīng)用在嵌入式、網(wǎng)站應(yīng)用、企業(yè)級(jí)應(yīng)用 J2EE架構(gòu)、.NET架構(gòu)、還有LAMP架構(gòu) 眾多的第三方支持(與LINBIT達(dá)成合作伙伴關(guān)系 )支持web2.0得天獨(dú)厚6MySQL的技術(shù)進(jìn)展M

3、ySQL3.23開(kāi)始支持外鍵(InnoDB)MySQL4.1開(kāi)始支持R-trees索引(MyISAM)MySQL從5.0開(kāi)始,全面支持視圖、存儲(chǔ)過(guò)程、函數(shù)和觸發(fā)器功能MySQL5.1支持分區(qū)功能MySQL5.1支持行復(fù)制MySQL6.0將實(shí)現(xiàn)雙向復(fù)制逐步增加對(duì)非結(jié)構(gòu)化數(shù)據(jù)XML的支持特性MySQL6.0將支持最新的FALCON 存儲(chǔ)引擎著名的數(shù)據(jù)庫(kù)大師Jim Starkey現(xiàn)在在MySQL開(kāi)發(fā)Falcon。Falcon面向的客戶(hù)是企業(yè)級(jí)用戶(hù)。Oracle跟MySQL簽定了合作協(xié)議,用戶(hù)可以繼續(xù)選擇InnoDB存儲(chǔ)引擎 7軟件下載登陸官方網(wǎng)站http:/,下載最新的released版本。創(chuàng)建My

4、SQL用戶(hù)和用戶(hù)組#groupadd mysql#useradd -r -g mysql mysql解壓MySQL#cd /usr/local#tar zxvf /opt/mysql-5.5.8-linux2.6-i686.tar.gz#ln -s /usr/local/mysql-5.5.8-linux2.6-i686 mysql8賦予MySQL用戶(hù)權(quán)限#cd mysql#chown -R mysql .#chgrp -R mysql .安裝MySQL#scripts/mysql_install_db -user=mysql#chown -R mysql data#cp /usr/local

5、/mysql/support-files/my-f /etc/fMySQL的啟動(dòng)與停止#bin/mysqld_safe -user=mysql &#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server#/etc/init.d/mysql.server start/stop/restart9更改數(shù)據(jù)庫(kù)root用戶(hù)的密碼#./bin/mysqladmin -u root password testtest打開(kāi)MySQL遠(yuǎn)程控制#./bin/mysql -uroot -p#grant all privi

6、leges on *.* to root1 identified by testtest with grant option;#flush privileges;#update db set host=1 where user=root;#flush privileges;10111213MySQL-Front一款小巧的管理MySQL的應(yīng)用程序。主要特性包括多文檔界面,語(yǔ)法突出,拖拽方式的數(shù)據(jù)庫(kù)和表格,可編輯/可增加/刪除的域,可編輯/可插入/刪除的記錄,可顯示的成員,可執(zhí)行的SQL 腳本,提供與外程序接口,保存數(shù)據(jù)到CSV文件等。MySQL Adm

7、inistratorMySQL Administrator 是用來(lái)執(zhí)行數(shù)據(jù)庫(kù)管理操作的程序和用來(lái)監(jiān)視和管理MySQL實(shí)例內(nèi)的數(shù)據(jù)庫(kù)、用戶(hù)的權(quán)限和數(shù)據(jù)的實(shí)用程序,比如說(shuō)配置、控制、開(kāi)啟和關(guān)閉mysql 服務(wù)。 MySQL Query BrowserMySQL Query Browser是一個(gè)可視化的toolset,用于創(chuàng)建、執(zhí)行以及最優(yōu)化的MySQL數(shù)據(jù)庫(kù)查詢(xún)。它就像是鑲嵌在Web瀏覽器中的一個(gè)集成的拖曳工具套件,為使用者提供了一個(gè)更簡(jiǎn)便、更有生產(chǎn)力的途徑來(lái)存取、分析存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)服務(wù)器中的信息。141516設(shè)有張馬虎,李小心兩人,都是地鐵口的自行車(chē)管理員.每天都有很多人來(lái)存取自行車(chē),張

8、馬虎的管理方式是:來(lái)存自己存,不記錄存的是什么車(chē),取時(shí)交5毛,也不檢查取的是否是自己的車(chē).李小心呢,則在存取自己車(chē)時(shí),記錄存車(chē)人的特征與自行車(chē)的特征,當(dāng)人來(lái)取車(chē),還要小心核一下,人與車(chē)的特征是否對(duì)應(yīng)思考:張馬虎和李小心誰(shuí)對(duì)業(yè)務(wù)的處理速度更高?二者誰(shuí)對(duì)自行車(chē)管理更安全?數(shù)據(jù)庫(kù)對(duì)同樣的數(shù)據(jù),有著不同的存儲(chǔ)方式和管理方式在mysql中,稱(chēng)為存儲(chǔ)引擎17多種可選擇的存儲(chǔ)引擎MyISAM InnoDB MERGE MEMORY(HEAP) BDB(BerkeleyDB) EXAMPLE FEDERATED ARCHIVE CSV BLACKHOLE FALCON18MyISAM是MySQL的默認(rèn)存儲(chǔ)引擎

9、文章,新聞等安全性要求不高的,選myisam訂單,資金,賬單,火車(chē)票等對(duì)安全性要求高的,可以選用innodb對(duì)于臨時(shí)中轉(zhuǎn)表,可以用memory型 ,速度最快出于速度和安全性的要求,選取合理的存儲(chǔ)引擎19p查看數(shù)據(jù)庫(kù)可以支持的存儲(chǔ)引擎 mysql show engines;20p 查看表的結(jié)構(gòu)等信息的若干命令1.Describe tablename; /查看數(shù)據(jù)表的結(jié)構(gòu)2.show table status like tablename/顯示表的當(dāng)前狀態(tài)值 3.show table status like tablenameG/顯示表的當(dāng)前狀態(tài)值21創(chuàng)建數(shù)據(jù)庫(kù)表時(shí)設(shè)置存儲(chǔ)存儲(chǔ)引擎的基本語(yǔ)法是:C

10、reate table tableName(columnName(列名1) type(數(shù)據(jù)類(lèi)型) attri(屬性設(shè)置),columnName(列名2) type(數(shù)據(jù)類(lèi)型) attri(屬性設(shè)置),.) engine = engineName例如,假設(shè)要?jiǎng)?chuàng)建一個(gè)名為user的表,此表包括id,用戶(hù)名username和性別sex三個(gè)字段,并且要設(shè)置表類(lèi)型為merge。則可用如下的方式創(chuàng)建此數(shù)據(jù)表,create table user( id int not null auto_increment, username char(20) not null, sex char(2), primary

11、key(id) engine=merge 22p 修改存儲(chǔ)引擎 可以用命令A(yù)lter table tableName engine =engineName假如,若需要將表user的存儲(chǔ)引擎修改為InnoDB類(lèi)型,則可使用命令alter table user engine= InnoDB 。如下圖所示: 查看修改后的表類(lèi)型,可見(jiàn)表類(lèi)型已經(jīng)變?yōu)镮nnoDB類(lèi)型。 23一句話(huà)說(shuō)字符集字符集就是一個(gè)字符二進(jìn)制字節(jié)的映射表考慮多語(yǔ)言與移植的問(wèn)題,選取合理的字符集字符集是一套符號(hào)和編碼的規(guī)則,不論是在 oracle 數(shù)據(jù)庫(kù)還是在 mysql 數(shù)據(jù)庫(kù),都存在字符集的選擇問(wèn)題,而且如果在數(shù)據(jù)庫(kù)創(chuàng)建階段沒(méi)有正確

12、選擇字符集,那么可能在后期需要更換字符集,而字符集的更換是代價(jià)比較高的操作,也存在一定的風(fēng)險(xiǎn),所以,我們推薦在應(yīng)用開(kāi)始階段,就按照需求正確的選擇合適的字符集,避免后期不必要的調(diào)整。(charset)241:節(jié)省空間建議在能夠完全滿(mǎn)足應(yīng)用的前提下,盡量使用小的字符集。因?yàn)楦〉淖址馕吨軌蚬?jié)省空間、減少網(wǎng)絡(luò)傳輸字節(jié)數(shù),同時(shí)由于存儲(chǔ)空間的較小間接的提高了系統(tǒng)的性能。有很多字符集可以保存漢字,比如 utf8、gb2312、gbk、gb18030 等等,但是常用的是gb2312 和 gbk。2:兼容性因?yàn)?gb2312 字庫(kù)比 gbk 字庫(kù)小,有些偏僻字(例如:洺)不能保存,因此在選擇字符集的時(shí)候

13、一定要權(quán)衡這些偏僻字在應(yīng)用出現(xiàn)的幾率以及造成的影響。3:發(fā)展空間在互聯(lián)網(wǎng)上,國(guó)際化的趨勢(shì)不可避免,且存儲(chǔ)空間已經(jīng)越來(lái)海量化,因此推薦用utf8,如果開(kāi)發(fā)內(nèi)網(wǎng)系統(tǒng),如內(nèi)部OA等,可以考慮GBK。25p 查看MySQL數(shù)據(jù)庫(kù)服務(wù)器和數(shù)據(jù)庫(kù)MySQL字符集。mysql show variables like character_set_%; +-+-+- | Variable_name | Value |. +-+-+- | character_set_client | utf8 |. - 客戶(hù)端字符集 | character_set_connection | utf8 |. | character

14、_set_database | utf8 |. - 數(shù)據(jù)庫(kù)字符集 | character_set_filesystem | binary |. | character_set_results | utf8 |. | character_set_server | utf8 |. - 服務(wù)器字符集 | character_set_system | utf8 |. | character_sets_dir | D:MySQL Server 5.0sharecharsets |. +-+-+- 26p 查看MySQL數(shù)據(jù)表(table)的MySQL字符集mysql show table status

15、from 庫(kù)名庫(kù)名 like %表名表名%; +-+-+-+-+-+-+- | Name | Engine | Version | Row_format | Rows | Collation |. +-+-+-+-+-+-+- | countries | InnoDB | 10 | Compact | 11 | utf8_general_ci |. +-+-+-+-+-+-+- p 查看MySQL數(shù)據(jù)列(column)的MySQL字符集。mysql show full columns from 表名表名; +-+-+-+- | Field | Type | Collation | . +-+-

16、+-+- | countries_id | int(11) | NULL | . | countries_name | varchar(64) | utf8_general_ci | . | countries_iso_code_2 | char(2) | utf8_general_ci | . | countries_iso_code_3 | char(3) | utf8_general_ci | . | address_format_id | int(11) | NULL | . +-+-+-+- 27p 修改字符集:MySQL:修改默認(rèn)字符集(MySQL 5.X) 1. 修改 MySQL

17、 數(shù)據(jù)庫(kù)默認(rèn)字符集(mysql database default character set) alter database testdb default character set = gb2312; 2. 修改 MySQL 數(shù)據(jù)表默認(rèn)字符集(mysql table default character set) alter table ip_to_country default character set = gb2312; 3.修改列級(jí)修改示例: mysqlAlter TABLE products CHANGE products_model products_model VARCHAR(

18、20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; 更 改了后永久生效 4.更改連接字符集 a. 臨時(shí)更改:mysql SET NAMES utf8; b.永久更改: shellvi /etc/f在client中增加:default-character-set=utf8注意:修改 MySQL 的默認(rèn)字符集,不管是在數(shù)據(jù)庫(kù)級(jí)別,還是數(shù)據(jù)表級(jí)別,對(duì)已經(jīng)存儲(chǔ)的字符數(shù)據(jù)無(wú)任何改變。只是新增的表或列,開(kāi)始使用新的字符集。 285.修改服務(wù)器級(jí)字符集a. 臨時(shí)更改: mysqlSET GLOBAL character_set

19、_server=utf8; b. 永久更改:shellvi /etc/fmysqlddefault-character-set=utf8 配置/etc/f文件:(linux 下local為UTF-8);分別在如下幾項(xiàng)中添加字符集:clientdefault-character-set=utf8mysqld_safedefault-character-set=utf8mysqlddefault-character-set=utf8#default-table-type=innodbmysqldefault-character-set=gb2312再重啟mysql讓配置生效:service mys

20、ql restart再執(zhí)行:show variables like %character%;29p 轉(zhuǎn)換 MySQL 數(shù)據(jù)表字符集(mysql table character set) 1.MySQL 中有一個(gè)數(shù)據(jù)表 ip_to_country,以前該表字符列數(shù)據(jù)都是以 utf8 編碼格式存放的,現(xiàn)在想轉(zhuǎn)換為 gb2312 編碼格式存放。需要使用 MySQL 轉(zhuǎn)換字符集命令:convert to character set alter table ip_to_country convert to character set gb2312; 提示:convert to 也會(huì)把數(shù)據(jù)表 ip_to_

21、country 的默認(rèn)字符集從 utf8 更改為 gb2312。 2. 轉(zhuǎn)換 MySQL 數(shù)據(jù)表中某個(gè)列的字符集(mysql column character set) alter table ip_to_country modify country_name varchar(50) character set gb2312; 這個(gè)語(yǔ)句把單獨(dú)一個(gè)列 country_name 的字符集轉(zhuǎn)換為 gb2312。這在用法在實(shí)際中比較少見(jiàn),因?yàn)榇蠖鄶?shù)情況下,都是改變整個(gè)表的字符集。 30舊數(shù)據(jù)庫(kù)GBK字符集舊網(wǎng)站系統(tǒng)GBK編碼新網(wǎng)站utf8編碼思考:數(shù)據(jù)庫(kù)不準(zhǔn)動(dòng),新站又是utf8,如何保持新網(wǎng)站與舊數(shù)據(jù)

22、的兼容?31q 數(shù)字類(lèi)型q 字符串類(lèi)型q 日期時(shí)間類(lèi)型q 選擇正確的數(shù)據(jù)類(lèi)型32333435通常我們應(yīng)該選擇盡可能小的數(shù)據(jù)類(lèi)型,這樣可以節(jié)省空間,并且可以更快地進(jìn)行訪(fǎng)問(wèn)和更新。但應(yīng)該注意需要保存的數(shù)據(jù)的范圍,如果選擇的類(lèi)型太小,數(shù)據(jù)可能會(huì)在插入時(shí)被截?cái)嗷虍a(chǎn)生錯(cuò)誤,所以一定要選擇一個(gè)覆蓋所有可能性的數(shù)據(jù)類(lèi)型為了優(yōu)化存儲(chǔ),在任何情況下均應(yīng)使用最精確的類(lèi)型。例如,如果列的值的范圍為從1到99999,若使用整數(shù),則MEDIUMINT UNSIGNED是好的類(lèi)型。在所有可以表示該列值的類(lèi)型中,該類(lèi)型使用的存儲(chǔ)最少。應(yīng)當(dāng)使用精度為65位十進(jìn)制數(shù)(基于10)對(duì)DECIMAL 列進(jìn)行所有基本計(jì)算(+、-、*、

23、/)使用雙精度操作對(duì)DECIMAL值進(jìn)行計(jì)算。如果準(zhǔn)確度不是太重要或如果速度為最高優(yōu)先級(jí),DOUBLE類(lèi)型即足夠了。為了達(dá)到高精度,可以轉(zhuǎn)換到保存在BIGINT中的定點(diǎn)類(lèi)型。這樣可以用64位整數(shù)進(jìn)行所有計(jì)算,根據(jù)需要將結(jié)果轉(zhuǎn)換回浮點(diǎn)值36顯示數(shù)據(jù)庫(kù)mysql show databases;顯示數(shù)據(jù)庫(kù)中的表mysql use mysql;mysql show tables;顯示數(shù)據(jù)庫(kù)中表的結(jié)構(gòu)mysql describe 表名; 37建立數(shù)據(jù)庫(kù)與表use 庫(kù)名;mysql create table name (id int(3) auto_increment not null primary k

24、ey, xm char(8),xb char(2),csny date);刪庫(kù)及刪表drop database 庫(kù)名; drop table 表名; 38增加記錄mysql insert into name values(,張三,男,1971-10-01); mysql insert into name values(,白云,女,1972-05-20); 修改記錄mysql update name set csny=1971-01-10 where xm=張三; 刪除記錄mysql delete from name where xm=張三;查詢(xún)記錄 mysql select * from na

25、me where xm=張三;3940備份單獨(dú)庫(kù)下面的所有表的方法mysqldump -uuname -ppasswd dbname /dir/filename 備份某一庫(kù)下面的幾個(gè)表的方法mysqldump -uuname -ppasswd dbname table1 table2. tableN /dir/filename 備份多個(gè)庫(kù)的方法mysqldump -uname -ppasswd -B db1 db2 /dir/filename 備份所有庫(kù)的方法 mysqldump -uname -ppasswd -A /dir/filename 411:在命令行操作mysql -uname -

26、ppasswd databaseName use dbname;mysql source /dir/filename;42檢查出錯(cuò)的表。如果該表檢查通過(guò),則完成任務(wù),否則必須修復(fù)出錯(cuò)的數(shù)據(jù)庫(kù)表。在開(kāi)始修復(fù)之前對(duì)表文件進(jìn)行拷貝,以保證數(shù)據(jù)的安全。開(kāi)始修復(fù)數(shù)據(jù)庫(kù)表。如果修復(fù)失敗,從數(shù)據(jù)庫(kù)的備份或更新日志中恢復(fù)數(shù)據(jù)。建立數(shù)據(jù)庫(kù)備份和使用更新日志,以防修復(fù)失敗,丟失數(shù)據(jù)。維護(hù)不是簡(jiǎn)單的運(yùn)行myisamchk維護(hù)程序就可以的。因?yàn)榇蠖鄶?shù)情況下,管理員進(jìn)行表的檢查和修復(fù)時(shí),服務(wù)器都要持續(xù)運(yùn)行,因此如果方法不當(dāng),很可能維護(hù)程序會(huì)與服務(wù)器產(chǎn)生沖突。通過(guò)表外部鎖定或內(nèi)部鎖定(使用的鎖定協(xié)議也不同,分別為讀鎖定和

27、寫(xiě)鎖定),避免維護(hù)過(guò)程中與服務(wù)器發(fā)生的交互作用如果你在Unix平臺(tái)上對(duì)表進(jìn)行維護(hù)時(shí),應(yīng)該首先注冊(cè)到專(zhuān)用的帳戶(hù) mysql,以避免對(duì)表讀寫(xiě)訪(fǎng)問(wèn)產(chǎn)生所有權(quán)的問(wèn)題,以及破壞數(shù)據(jù)庫(kù)目錄的所有權(quán)限。43在執(zhí)行崩潰恢復(fù)時(shí),理解在一個(gè)數(shù)據(jù)庫(kù)中的每一個(gè)表tbl_name對(duì)應(yīng)的在數(shù)據(jù)庫(kù)目錄中的3個(gè)文件是很重要的: 文件 用途 “tbl_name.frm” 表定義(表格)文件 “tbl_name.MYD” 數(shù)據(jù)文件 “tbl_name.MYI” 索引文件 這3個(gè)文件的每一個(gè)文件類(lèi)型可能遭受不同形式的損壞,但是問(wèn)題最常發(fā)生在數(shù)據(jù)文件和索引文件。 myisamchk通過(guò)一行一行地創(chuàng)建一個(gè)“.MYD”(數(shù)據(jù) )文件的副

28、本來(lái)工作,它通過(guò)由刪除老的“.MYD 文件并且重命名新文件到原來(lái)的文件名結(jié)束修復(fù)階段。如果你使用-quick,myisamchk不創(chuàng)建一個(gè)臨時(shí)“.MYD”文件,只是假定“.MYD”文件是正確的并且僅創(chuàng)建一個(gè)新的索引文件,不接觸“.MYD”文件,這是安全的,因?yàn)閙yisamchk自動(dòng)檢測(cè)“.MYD”文件是否損壞并且在這種情況下,放棄修復(fù)。你也可以給myisamchk兩個(gè)-quick選項(xiàng)。在這種情況下,myisamchk不會(huì)在一些錯(cuò)誤上(象重復(fù)鍵)放棄,相反試圖通過(guò)修改“.MYD”文件解決它們。通常,只有在你在太少的空閑磁盤(pán)空間上實(shí)施一個(gè)正常修復(fù),使用兩個(gè)-quick選項(xiàng)才有用。在這種情況下,你應(yīng)

29、該至少在運(yùn)行myisamchk前做一個(gè)備份。 44為了檢查一張表,使用下列命令: myisamchk tbl_name 這能找出所有錯(cuò)誤的99.99%。它不能找出的是僅僅涉及數(shù)據(jù)文件的損壞(這很不常見(jiàn))。如果你想要檢查一張表,你通常應(yīng)該沒(méi)有選項(xiàng)地運(yùn)行myisamchk或用-s或-silent選項(xiàng)的任何一個(gè)。 myisamchk -e tbl_name 它做一個(gè)完全徹底的數(shù)據(jù)檢查(-e意思是“擴(kuò)展檢查”)。它對(duì)每一行做每個(gè)鍵的讀檢查以證實(shí)他們確實(shí)指向正確的行。這在一個(gè)有很多鍵的大表上可能花很長(zhǎng)時(shí)間。myisamchk通常將在它發(fā)現(xiàn)第一個(gè)錯(cuò)誤以后停止。如果你想要獲得更多的信息,你能增加-verbo

30、se(-v)選項(xiàng)。這使得myisamchk繼續(xù)一直到最多20個(gè)錯(cuò)誤。在一般使用中,一個(gè)簡(jiǎn)單的myisamchk(沒(méi)有除表名以外的參數(shù))就足夠了。 myisamchk -e -i tbl_name 象前面的命令一樣,但是-i選項(xiàng)告訴myisamchk還打印出一些統(tǒng)計(jì)信息。45一張損壞的表的癥狀通常是查詢(xún)意外中斷并且你能看到例如這些錯(cuò)誤: “tbl_name.frm”被鎖定不能改變。 不能找到文件“tbl_name.MYI”(Errcode :# )。 從表處理器的得到錯(cuò)誤#(此時(shí),錯(cuò)誤135是一個(gè)例外)。 意外的文件結(jié)束。 記錄文件被毀壞。 在這些情況下,你必須修復(fù)表。myisamchk通常能檢

31、測(cè)并且修復(fù)出錯(cuò)的大部分東西。 修復(fù)過(guò)程包含最多4個(gè)階段,在下面描述。在你開(kāi)始前,你應(yīng)該cd到數(shù)據(jù)庫(kù)目錄和檢查表文件的權(quán)限,確保他們可被運(yùn)行mysqld的用戶(hù)讀取。如果它拒絕你修改文件,他們也必須是可被你寫(xiě)入的。46 階段1:檢查你的表 運(yùn)行 myisamchk *.MYI或(myisamchk -e *.MYI,如果你有更多的時(shí)間)。使用-s(沉默)選項(xiàng)禁止不必要的信息,你必須只修復(fù)那些myisamchk報(bào)告有一個(gè)錯(cuò)誤的表。對(duì)這樣的表,繼續(xù)到階段2,如果在檢查時(shí),你得到奇怪的錯(cuò)誤(例如out of memory錯(cuò)誤),或如果myisamchk崩潰,到階段3 階段2 :簡(jiǎn)單安全的修復(fù) 首先,試試

32、myisamchk -r -q tbl_name(-r -q意味著“快速恢復(fù)模式”)。這將試圖不接觸數(shù)據(jù)文件來(lái)修復(fù)索引文件。如果數(shù)據(jù)文件包含它應(yīng)有的一切和在數(shù)據(jù)文件指向正確地點(diǎn)的刪除連接,這應(yīng)該管用并且表可被修復(fù)。開(kāi)始修理下一張表。否則,使用下列過(guò)程: 在繼續(xù)前做數(shù)據(jù)文件的一個(gè)備份。 使用myisamchk -r tbl_name(-r意味著“恢復(fù)模式”)。這將從數(shù)據(jù)文件中刪除不正確的記錄和已被刪除的記錄并重建索引文件。 如果前面的步驟失敗,使用myisamchk -safe-recover tbl_name。安全恢復(fù)模式使用一個(gè)老的恢復(fù)方法,處理常規(guī)恢復(fù)模式不行的少數(shù)情況(但是更慢)。 如果

33、在修復(fù)時(shí),你得到奇怪的錯(cuò)誤(例如out of memory錯(cuò)誤),或如果myisamchk崩潰,到階段3。 47 階段3 :困難的修理 如果在索引文件的第一個(gè)16K塊被破壞,或包含不正確的信息,或如果索引文件丟失,你只應(yīng)該到這個(gè)階段 。在這種情況下,創(chuàng)建一個(gè)新的索引文件是必要的。按如下這樣做: 把數(shù)據(jù)文件移更安全的地方。 使用表描述文件創(chuàng)建新的(空)數(shù)據(jù)和索引文件:shell mysql db_name mysql DELETE FROM tbl_name; mysql quit將老的數(shù)據(jù)文件拷貝到新創(chuàng)建的數(shù)據(jù)文件之中。(不要只是將老文件移回新文件之中;你要保留一個(gè)副本以防某些東西出錯(cuò)。) 回

34、到階段2。現(xiàn)在myisamchk -r -q應(yīng)該工作了。(這不應(yīng)該是一個(gè)無(wú)限循環(huán))。48 階段4:非常困難的修復(fù) 只有描述文件也破壞了,你才應(yīng)該到達(dá)這個(gè)階段。這應(yīng)該從未發(fā)生過(guò),因?yàn)樵诒肀粍?chuàng)建以后,描述文件就不再改變了。 從一個(gè)備份恢復(fù)描述文件并且回到階段3。你也可以恢復(fù)索引文件并且回到階段2。對(duì)后者,你應(yīng)該用myisamchk -r啟動(dòng)。 如果你沒(méi)有一個(gè)備份但是確切地知道表是怎樣被創(chuàng)建的,在另一個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建表的一個(gè)拷貝。刪除新的數(shù)據(jù)文件,然后從其他數(shù)據(jù)庫(kù)將描述和索引文件移到破壞的數(shù)據(jù)庫(kù)中。這給了你新的描述和索引文件,但是讓數(shù)據(jù)文件獨(dú)自留下來(lái)了。回到階段2并且嘗試重建索引文件。491.設(shè)置用戶(hù)

35、與并授權(quán)GRANT命令使用說(shuō)明,先來(lái)看一個(gè)例子,創(chuàng)建一個(gè)只允許從本地登錄的超級(jí)用戶(hù)ipi,并允許將權(quán)限賦予別的用戶(hù),i314GRANT ALL PRIVILEGES ON *.* TO ipilocalhost IDENTIFIED BYi314WITH GRANT OPTION;GRANT命令說(shuō)明:ALL PRIVILEGES 是表示所有權(quán)限,你也可以使用select、update等權(quán)限提到的權(quán)限。ON 用來(lái)指定權(quán)限針對(duì)哪些庫(kù)和表。*.* 中前面的*號(hào)用來(lái)指定數(shù)據(jù)庫(kù)名,后面的*號(hào)用來(lái)指定表名。TO 表示將權(quán)限賦予某個(gè)用戶(hù)。ipilocalhost 表示ipi用戶(hù),后面接限制的主機(jī),可以是IP、IP段、域名以及%,%表示任何地方。注意:這里%有的版本不包括本地,以前碰到過(guò)給某個(gè)用戶(hù)設(shè)置了%允許任何地方登錄,但是在本地登錄不了,這個(gè)和版本有關(guān)系,遇到這個(gè)問(wèn)題再加一個(gè)localhost的用戶(hù)就可以了。IDENTIFIED BY 指定用戶(hù)的登錄密碼

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論