防偽碼:鍥而舍之,朽木不折;鍥而不舍,金石可鏤
第三章、MySQL數(shù)據(jù)庫系統(tǒng)
目前,比較主流的網(wǎng)站構(gòu)架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作為操作系統(tǒng),Apache作為Web服務器,MySQL作為數(shù)據(jù)庫,PHP作為服務器端腳本解釋器。由于這四個軟件都是自由或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢就可以建立起一個穩(wěn)定、免費的網(wǎng)站系統(tǒng)。
為方便演示,我們將使用圖形化界面講解MySQL基本操作、備份恢復以及用戶授權
一、起源
a、MySQL是開源的關系型數(shù)據(jù)庫服務器軟件
b、目前由Oracle公司開發(fā)和維護
c、官網(wǎng):http://www.mysql.com/
二、優(yōu)點
a、多線程、多用戶
b、基于C/S(客戶端/服務器)架構(gòu)
c、高性能、高可靠、易于使用
3、MySQL的編譯安裝
三、MySQL編譯安裝
1、準備工作:
a、確認沒有使用rpm方式安裝,否則建議將其卸載
rpm -q mysql-server mysql(查詢狀態(tài))
rpm -ivh /media/RHEL_6.5\ x86_64\ Disc\ 1/Packages/ncurses-devel-5.7-3.20090208.el6.x86_64.rpm(安裝自帶的ncurses-devel包,即軟件開發(fā)包)
b、cmake編譯安裝
2、源碼編譯安裝
a、創(chuàng)建運行用戶,此處以用戶和組都為mysql
b、解包
c、配置(默認使用字符集utf8,并且添加其他字符集的支持)
字符如下:
cmake -DCMAKE_INSTALL_PREFIX(MySQL數(shù)據(jù)庫程序存放目錄)=/usr/local/mysql
-DSYSCONFDIR(初始化參數(shù)文件目錄)=/etc
-DDEFAULT_CHARSET(默認字符集編碼,如utf8)=utf8
-DDEFAULT_COLLATION(默認字符集校對規(guī)則)=utf8_general_ci
-DWITH_EXTRA_CHARSETS(額外支持的其他字符集編碼)=all
d、編譯并安裝
3、安裝后的調(diào)整
a、對數(shù)據(jù)庫目錄進行權限設置
b、建立配置文件(一般選擇my-medium.cnf即可,該文件能夠滿足大多數(shù)企業(yè)的中等應用需求)
注:MySQL服務器的配置文件默認位于/etc/my.cnf
MySQL端口號:3306
SQLServer端口號:1433(面試題)
c、初始化數(shù)據(jù)庫
以內(nèi)置賬戶執(zhí)行初始化腳本mysql_install_db,指定數(shù)據(jù)存放目錄
/usr/local/mysql/scripts/mysql_install_db
--user=mysql --basedir(基本目錄)=/usr/local/mysql
--datadir(數(shù)據(jù)目錄)=/usr/local/mysql/data/
d、設置環(huán)境變量(即每次開機會自動加載識別)
注:. /etc/profile(空格代表另一個目錄在執(zhí)行)
4、添加系統(tǒng)服務(便于chkconfig進行管理)
注:將support-files文件夾下的mysql.server腳本,復制到/etc/rc.d/init.d目錄下,
改名為mysqld,設置執(zhí)行權限,然后將mysqld添加為系統(tǒng)服務
然后啟動服務,查看運行狀態(tài),監(jiān)聽端口
訪問數(shù)據(jù)庫;
mysqladmin -u root -p password '新密碼'(為安全起見,建議更改初始密碼,默認無密碼)
mysql -u root -p
exit或quit可以退出mysql命令工具
四、使用MySQL數(shù)據(jù)庫
1、查看數(shù)據(jù)庫結(jié)構(gòu)
show database(查看庫)
use mysql;
show tables;(切換到mysql數(shù)據(jù)庫,查看表)
查看表的結(jié)構(gòu)(以user表為例)
use user;
describe user;
2、創(chuàng)建及其刪除庫和表(此處以benet庫,366班級為例)
創(chuàng)建benet數(shù)據(jù)庫
創(chuàng)建學生表(列:name 數(shù)據(jù)類型:char (48))、default默認密碼字串、primary表示以name做主鍵
password表示密碼為密文)
插入數(shù)據(jù)并查詢
增刪改查的語句和sqlserver的語句完全一樣,可參考sqlserver語句,這里不再詳細演示
五、維護MySQL數(shù)據(jù)庫(重點)
1、數(shù)據(jù)庫用戶授權
頻繁使用root賬號會給服務器帶來一定的安全風險,實際工作中,會建立一些低權限的用戶,
給予相應的權限,從而使數(shù)據(jù)庫的風險降至最低
REVOKE 權限列表 on 庫名.表名 to 用戶名@來源地址 identified by ‘密碼’
權限列表: 增刪改查,以逗號分離
庫名.表名:可使用通配符“*”,例如使用“benet.*”表示benet數(shù)據(jù)庫中的所有表
用戶名@來源地址:誰能連接,從哪里連接;可使用通配符“%”,表示某個區(qū)域或網(wǎng)段內(nèi)所有地址
identified:用戶連接數(shù)據(jù)庫時所使用的密碼字符串,若省略,則密碼為空
實驗演示(添加“xiaoming”用戶,允許從本機訪問,對benet數(shù)據(jù)庫中的所有表具有查詢權限,
驗證密碼為“123456”):
查看權限:show grants for 用戶名@來源地址
撤銷權限:revoke 權限列表 on 數(shù)據(jù)庫名.表名 from 用戶名@來源地址
2、數(shù)據(jù)庫的備份與恢復
及時備份數(shù)據(jù)庫時信息安全管理的重要工作內(nèi)容之一,MySQL數(shù)據(jù)庫備份可采用多種方式
A、可直接備份目錄 /usr/local/mysql/var
或B、使用專用備份工具 mysqldump
本章主要講解MySQL自帶的傾倒工具mysqldump為例
格式1:導出庫中的部分表
mysqldump 選項 表名1 表名2 >?。瘋浞萋窂剑瘋浞菸募?/span>
格式2:導出一個或多個完整的庫(含其中的表)
mysqldump 選項 --database > /備份路徑/備份文件名
格式3:備份MySQL服務器中所有數(shù)據(jù)庫
mysqldump 選項 --databases > /備份路徑/備份文件名
恢復數(shù)據(jù)庫:mysql 選項 庫名 表名 < /備份路徑/備份文件名
實驗演示:
格式1(以root的身份,備份benet數(shù)據(jù)庫中的t366表,名為benet-t366.sql)
格式2(以root的身份,備份benet數(shù)據(jù)庫,名為benet.sql)
格式3(以root的身份,備份mysql所有的數(shù)據(jù)庫,名為all-data.sql)
查看備份文件內(nèi)容(使用grep,less,cat等文本工具可以查看腳本內(nèi)容)
恢復數(shù)據(jù)庫(刪除表t366,然后恢復)
驗證導入結(jié)果:
實驗到此就演示完畢了,希望大家學以致用!謝謝!
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
更多建議: