mysql linux附加数据库文件夹,Linux全攻略--MySQL数据库配置与管理
MySQL是一種精巧的,多用戶和多線程的中小型SQL數(shù)據(jù)庫系統(tǒng),由一個(gè)服務(wù)器守護(hù)進(jìn)程mysqld和很多不同的客戶程序和庫組成.現(xiàn)在形成了一個(gè)"Linux+Apache+PHP+MySQL"構(gòu)建電子商務(wù)網(wǎng)站的黃金網(wǎng)站的黃金組合.
MySQL不是開放源代碼的產(chǎn)品,但在某些情況下可以自由使用.由于它的強(qiáng)大功能,靈活性,豐富的應(yīng)用編程接口,以及精巧的系統(tǒng)結(jié)構(gòu),受到了廣大自由軟件愛好者甚至是商業(yè)軟件用戶的青睞.
MySQL的特點(diǎn)
MySQL具備非常好的性能,甚至可以和目前的所有商用數(shù)據(jù)庫系統(tǒng)相媲美,MySQL最主要的優(yōu)點(diǎn)就是"簡單,高效,穩(wěn)定性高".下面是具體的特點(diǎn):
MySQL可以運(yùn)行在不同的平臺上,如:WINDOWS98/NT/200/2003和RED HAT LINUX.而且在UNIX/LINUX環(huán)境下支持多線程的運(yùn)行方式.
MySQL提供對多種數(shù)據(jù)庫的支持,如:Oracle,Informix,Sybase,也提供對ODBC的支持.
MySQL可以使用多種語言,如:C,C++,JAVA,PERL,PHP等.
MySQL提供非常完善的權(quán)限系統(tǒng)
一.安裝和啟動MySQL
1.安裝SQL
先查看安裝沒.
安裝好的可以看到如圖的安裝包.
2.啟動MySQL
兩種啟動方法.
查看運(yùn)行狀態(tài)
如果希望MySQL在下次系統(tǒng)啟動時(shí)自動啟動,可用下面的命令:
#ntsysv或在services菜單中將mysqld 選中.
二.MySQL實(shí)用程序簡介
MySQL安裝完成之后,可以在/usr/bin路徑下找到MySQL實(shí)用程序.
safe_mysqld? :一個(gè)腳本文件,用于以安全的方式啟動mysqld 守護(hù)進(jìn)程,其安全包括:當(dāng)一個(gè)錯(cuò)誤發(fā)生時(shí),有能力重啟服務(wù)器并且將運(yùn)行時(shí)的信息記錄到一個(gè)日志文件中.
mysql :一個(gè)基于命令行的MySQL客戶端程序
mysql_install_db :用于以缺省權(quán)限創(chuàng)建MySQL權(quán)限表,該程序通常僅在系統(tǒng)上第一次安裝MySQL時(shí)執(zhí)行一次
mysqladmin :用于執(zhí)行數(shù)據(jù)庫的管理操作,如創(chuàng)建或刪除數(shù)據(jù)庫,加載授權(quán)表和停止MySQL服務(wù)等.也可以用于查看MySQL版本,進(jìn)程和狀態(tài)信息
myisamchk:用于描述,檢查,優(yōu)化和修復(fù)MySQL中和各個(gè)表,并可以顯示表的相關(guān)信息
mysqlshow:用于顯示數(shù)據(jù)庫,表,列和索引等信息
mysqlaccess:一個(gè)腳本,用于檢查對主機(jī),用戶和數(shù)據(jù)庫組合的存取權(quán)限
mysqlbug:MySQL錯(cuò)誤報(bào)告腳本,用于向MySQL郵件列表中添加錯(cuò)誤報(bào)告
mysqldump:用于將MySQL數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出一個(gè)文本文件.
mysqlmport:提供一個(gè)到SQL語句LOAD DATA INFILE的命令行接口,通過LOAD DATA INFILE命令,可以將文本文件導(dǎo)入到數(shù)據(jù)庫中.
make_binary_release:用于制作一個(gè)編譯MySQL的二進(jìn)制版本
msql2mysql:一個(gè)外殼腳本,用于轉(zhuǎn)換MSQL程序到MySQL
replace:一個(gè)實(shí)用程序,由msql2mysql使用.
三.MySQL數(shù)據(jù)庫的管理與維護(hù).
1.創(chuàng)建數(shù)據(jù)庫
在MySQL數(shù)據(jù)庫系統(tǒng)中,可以使用兩種方法來創(chuàng)建數(shù)據(jù)庫,即在客戶端程序mysql環(huán)境下使用SQL語句CREATE DATABASE或在LINUX的SHELL環(huán)境下使用管理工具mysqladmin的子命令CREATE.
創(chuàng)建后查看數(shù)據(jù)庫.可看到存在3個(gè)數(shù)據(jù)庫.
這是使用管理工具mysqladmin創(chuàng)建數(shù)據(jù)庫.這樣兩種方法都介紹了.
2.刪除數(shù)據(jù)庫.
同樣可以利用上面兩種方法實(shí)現(xiàn).
這是使用SQL語句實(shí)現(xiàn)
這是使用工具實(shí)現(xiàn).
3.創(chuàng)建和刪除表
數(shù)據(jù)庫創(chuàng)建之后,可使用如下命令來在現(xiàn)存的數(shù)據(jù)庫中創(chuàng)建或刪除表
在數(shù)據(jù)庫sales中創(chuàng)建四個(gè)表.
創(chuàng)建完成之后查看有哪些表,然后進(jìn)行刪除表.
4.查看表結(jié)構(gòu).
表創(chuàng)建完成后,可使用如下命令來查看表的結(jié)構(gòu).
可以看到表中的數(shù)據(jù)結(jié)構(gòu).
5.向表中添加并查看數(shù)據(jù).
添加后進(jìn)行查看表中的數(shù)據(jù).
6.維護(hù)索引
MySQL數(shù)據(jù)庫表的所有列類均可創(chuàng)建索引,一個(gè)表最多可有16個(gè)索引,同時(shí),MySQL可以在一個(gè)表的多個(gè)列上創(chuàng)建索引,一個(gè)索引可以由最多15個(gè)列組成.
1)創(chuàng)建索引.
創(chuàng)建test表,同時(shí)使用name列的前10字符創(chuàng)建索引.創(chuàng)建后進(jìn)行查看.
使用CREATE INDEX語句為現(xiàn)存表employee中的name列創(chuàng)建索引.
使用ALTER TABLE語句為現(xiàn)存表products中的name列創(chuàng)建索引.
2)刪除索引
可以使用DROP INDEX或ALTER TABLE語句.
使用SHOW查看的時(shí)候,可知被刪除了.
使用ALTER語句刪除.
四.MySQL數(shù)據(jù)目錄和日志文件
1.MySQL數(shù)據(jù)目錄的位置.
默認(rèn)情況下,通過RPM包安裝的MySQL數(shù)據(jù)目錄為/var/lib/mysql.
查看配置文件my.cnf 的內(nèi)容.
使用工具查看.
2.MySQL數(shù)據(jù)目錄的結(jié)構(gòu).
MySQL數(shù)據(jù)目錄中包含了由服務(wù)器管理的所有數(shù)據(jù)庫和表,它們被組織成一個(gè)樹狀結(jié)構(gòu),該結(jié)構(gòu)是通過LINUX文件系統(tǒng)的層次結(jié)構(gòu)用簡單的方式實(shí)現(xiàn).
MySQL每個(gè)數(shù)據(jù)庫都對應(yīng)自己的數(shù)據(jù)庫目錄,這些數(shù)據(jù)庫目錄作為子目錄存儲在MySQL數(shù)據(jù)目錄中,與其所代表數(shù)據(jù)庫名稱相同.
可看到有3個(gè)數(shù)據(jù)庫目錄.
數(shù)據(jù)庫中的表對應(yīng)數(shù)據(jù)庫目錄中的文件,每個(gè)表在數(shù)據(jù)庫目錄中都對應(yīng)3個(gè)文件.一個(gè)是格式文件,一個(gè)數(shù)據(jù)文件和一個(gè)索引文件.每個(gè)文件的基本名稱都與該表相同.擴(kuò)展名指明該文件的類型.如下:
格式文件:.frm
數(shù)據(jù)文件:.MYD
索引文件:.MYI
通過下面的操作可以查看數(shù)據(jù)庫目錄中的表文件.
顯示mysql數(shù)據(jù)庫中目錄的表文件.
3.MySQL日志文件.
這些文件提供了關(guān)于服務(wù)器運(yùn)行的重要信息,對數(shù)據(jù)庫的管理和維護(hù)是非常重要的.
1)錯(cuò)誤日志.包含了服務(wù)器寫入標(biāo)準(zhǔn)錯(cuò)誤輸出設(shè)備的所有消息,同時(shí)還包含了MySQL服務(wù)的啟動和關(guān)閉事件.錯(cuò)誤日志是由實(shí)用程序safe_mysqld產(chǎn)生,因此在通過調(diào)用safe_mysqld啟動MySQL服務(wù)時(shí),錯(cuò)誤日志才會存在.
默認(rèn)情況下,錯(cuò)誤日志并不存儲在MySQL數(shù)據(jù)目錄中,是由于配置文件/etc/my.cnf中指定為/var/log/mysqld.log.
可看到err-log這一行指定了錯(cuò)誤日志文件為/var/log/mysqld.log.
這是用命令#less /var/log/mysqld.log返回錯(cuò)誤日志的內(nèi)容.其中對MySQL服務(wù)的啟動和關(guān)閉做了記錄.
2)常規(guī)日志和更新日志.常規(guī)日志是用來記錄有關(guān)MySQL服務(wù)器運(yùn)行的常規(guī)信息,包括用戶的連接,查詢以及其它各種事件.更新日志用來記錄修改數(shù)據(jù)庫的查詢信息.
常規(guī)日志和更新日志默認(rèn)情況下并沒啟用.
可根據(jù)需要啟用.
添加log?? log-update選項(xiàng)來啟用更新日志.
五.MySQL數(shù)據(jù)庫用戶和權(quán)限
MySQL提供了一個(gè)非常實(shí)用的權(quán)限系統(tǒng),用于管理和控制某個(gè)用戶使用其所提供的主機(jī)名,用戶名和密碼能否連接到指定的數(shù)據(jù)庫服務(wù)器,能否打開所需數(shù)據(jù)庫和能否對熱氣進(jìn)行讀取,添加,修改和刪除等操作.
1.系統(tǒng)數(shù)據(jù)庫mysql
MySQL內(nèi)置了一個(gè)系統(tǒng)數(shù)據(jù)庫mysql,其中包含存放著權(quán)限系統(tǒng)所需要的數(shù)據(jù)的授權(quán)表.當(dāng)MySQL服務(wù)器啟動時(shí),會首先讀取系統(tǒng)數(shù)據(jù)庫mysql中的授權(quán)表,親將表中相關(guān)的數(shù)據(jù)庫裝入內(nèi)存;當(dāng)用戶連接數(shù)據(jù)庫服務(wù)器并對數(shù)據(jù)庫進(jìn)行存取操作時(shí),MySQL會根據(jù)這些表中的數(shù)據(jù)做相應(yīng)的權(quán)限控制.因此,在設(shè)置用戶的存取權(quán)限時(shí),必然要對mysql數(shù)據(jù)庫有關(guān)的表進(jìn)行修改.
mysql數(shù)據(jù)庫中用于權(quán)限系統(tǒng)的授權(quán)表主要包括user,db,host,tables_priv,columns_priv.可以啟用客戶端程序mysql.執(zhí)行show tables命令進(jìn)行查看.
2.MySQL權(quán)限系統(tǒng)的工作原理
MySQL權(quán)限系統(tǒng)保證所有的用戶可以嚴(yán)格按照事先分配好的權(quán)限對數(shù)據(jù)庫進(jìn)行允許的操作.
1)第一階段--連接驗(yàn)證階段.
用戶的身份根據(jù)兩個(gè)信息來確定,即從哪個(gè)主機(jī)連接和使用哪個(gè)MySQL用戶.連接驗(yàn)證需要使用系統(tǒng)數(shù)據(jù)庫mysql中user表的Host,User和Password 共3個(gè)范圍字段.
2)第二階段--請求驗(yàn)證階段.
這一階段,MySQL權(quán)限系統(tǒng)將會檢查用戶所發(fā)出的每一個(gè)對于數(shù)據(jù)庫的操作請求,以確定用戶是否具有足夠的權(quán)限來執(zhí)行這一操作.
3.連接MySQL服務(wù)器
要想使用mysql客戶端程序?qū)?shù)據(jù)庫進(jìn)行管理,首先需要連接將要管理的MySQL服務(wù)器.連接時(shí),需要指定主機(jī)名,用戶名和口令.
4.MySQL的初始權(quán)限.
MySQL安裝完成之后,在啟動MySQL服務(wù)時(shí),會加載授權(quán)表中的初始權(quán)限設(shè)置,這些初始權(quán)限存儲在user和db表中.主要包括:
內(nèi)置一個(gè)口令為空的root用戶,是超級用戶.使用root用戶連接服務(wù)器時(shí),必須由本地主機(jī)(localhost)發(fā)出.
內(nèi)置一個(gè)匿名用戶,該用戶可對有一個(gè)名為"test"或名稱以"test_"開始的數(shù)據(jù)庫進(jìn)行任何操作.使用匿名用戶連接服務(wù)器時(shí),也必須由本地主機(jī)發(fā)出.
其它權(quán)限均被拒絕.
5.設(shè)置MySQL超級用戶root口令.
將口令設(shè)置為crq
看最后一個(gè)是將匿名用戶刪除.
6.設(shè)置MySQL數(shù)據(jù)庫權(quán)限示例.
1)添加新的用戶權(quán)限.
使用root登錄后,使用GRANT語句來添加一個(gè)可以從本地主機(jī)連接到MySQL服務(wù)器的用戶crq,但連接時(shí)必須使用口令crqpass.
使用同樣的方法添加一個(gè)可以從其它任何地方連接到MySQL服務(wù)器的超級用戶crq,使用口令為crqpass.
2)授予用戶特定的權(quán)限
使用GRANT語句添加一個(gè)可以從本地主機(jī)連接到MySQL服務(wù)器的用戶yang,并且授予其針對sales數(shù)據(jù)庫中enployee表的select 和insert權(quán)限.
查看數(shù)據(jù)庫中的表.
退出重新連接數(shù)據(jù)庫服務(wù)器.
表明當(dāng)前用戶yang僅針對表employee具有操作權(quán)限,用戶不具有操作權(quán)限的表對于該用戶來說是不可視的,不會出現(xiàn)在列表中.
表明當(dāng)前用戶對表有SELECT權(quán)限.
表明當(dāng)前用戶有INSERT權(quán)限.
當(dāng)前用戶不允許對employee表的DELETE權(quán)限.
3)撤消用戶權(quán)限.如果想撤消用戶權(quán)限,需要使用REVOKE語句.
然后使用>REVOKE INSERT ON sales.employee FROM ;
然后插入數(shù)據(jù)的時(shí)候就不行了,說明yang 針對employee表的insert權(quán)限已被撤消.
7.MySQL數(shù)據(jù)庫的備份和恢復(fù)
把數(shù)據(jù)庫sales備份到mysql.bak目錄.然后查看備份成功.
先刪除數(shù)據(jù)庫sales,再創(chuàng)建. sales.
可看到恢復(fù)成功.
到這里全部介紹完畢.
本文出自 “yangming.com” 博客,轉(zhuǎn)載請與作者聯(lián)系!
總結(jié)
以上是生活随笔為你收集整理的mysql linux附加数据库文件夹,Linux全攻略--MySQL数据库配置与管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++学习之路 | PTA乙级—— 10
- 下一篇: mysql sysbench_详解MyS