一. 數據庫服務器的基本概念
1. 數據庫相關概念的定義
數據
數據是一種描述事物符號記錄
數據庫
數據庫是經過計算機整理的、存儲在一個或多個文件中的、有組織的、可共享的數據集合
數據庫管理系統
數據庫管理系統是位於用戶和操作系統之間的用於管理數據庫的應用軟件
數據庫系統
數據庫系統是數據庫、數據庫管理系統、數據庫管理系統運行時所需軟硬件及相關人員的集合
數據庫服務器
運行數據庫管理系統可以實現網絡分佈式存儲的主機稱爲數據庫服務器
2. 數據庫模型的分類
關係數據庫
層次數據庫
網狀數據庫
面向對象數據庫
3. Linux下的數據庫管理系統
企業級服務器
Oracle
Sybase
DB2
中小型服務器
PostgreSQL
MySQL
4. SQL簡介
SQL(結構化查詢語言)是一種綜合、通用、功能極強且簡潔易用的關係數據庫語言,可以應用於多種數據庫管理系統(Oracle、SQL Server、Mysql、Postgresql)和多種開發工具(VB、VC、DEPHI、PB)中
5. DBA(數據庫管理員)的職責
服務器的啓動、關閉、維護及優化
用戶賬號的管理
日誌管理
數據庫的備份和恢復
二. MySQL基礎
1. MySQL簡介
MySQL是一種精巧的、多用戶和多線程的中小型SQL數據庫系統,可以實現網絡的分佈式存儲。
2. MySQL的特點
支多線程和多CPU
沒有內存溢出漏洞
支持多種語言利用MySQL的API進行開發
可以運行在不同平臺上
提供多種數據類型
支持ODBC、SSL
3. MySQL的安裝方法
方法一:RPM包安裝方法
//放入第二安裝光盤,安裝MYSQL所需的RPM包
#rpm -ivh perl-CGI-2.81-88.i386.rpm
#rpm -ivh perl-DBI-1.32-5.i386.rpm
#rpm -ivh perl-DBD-MySQL-2.1021-3.i386.rpm
//安裝mysql的rpm包
#rpm -ivh mysql-3.23.54a-11.i386.rpm
#rpm -ivh mysql-server-3.23.54a-11.i386.rpm
#rpm -ivh mysql-devel-3.23.54a-11.i386.rpm
方法二:編譯安裝方法
#tar -xzvf mysql-3.23.54a.tar.gz
#cd mysql.3.23.54a
#./configure --prefix=/usr/local/mysql
#make
#make install
相關文件:
safe_mysqld
用於以安全方式啓動mysqld守護進程的腳本
mysql
基於命令行的mysql客戶端連接程序
mysql_install_db
用於初始化系統的數據庫
mysqladmin
mysql的管理程序
myisamchk
用於檢查、優化和修復mysql中的各個表
mysqlshow
用於顯示數據庫、表、列和索引等信息
mysqldump
將數據庫的數據到一個文本文件中
mysqlimport
將文本文件導入到數據庫中
4. 啓動服務
方法一:
#service mysql start
方法二:
#/etc/init.d/mysqld start
三. Mysql服務器管理
1. 認識系統數據庫
mysql服務器默認情況下自建兩個系統數據庫,分別是:
mysql庫:存放mysql服務器相關設置參數和用戶權限分配等信息,當啓動mysql服務器時,會自動讀取該庫中的信息
test庫:供用戶學習所用
2. 連接服務器的方法
客戶機可以通過客戶端連接工具,連接到服務器上從而進行相應的管理操作,具體操作方法如下:
#mysql [ -h 主機名] [-u 用戶名] [ -p 密碼] [數據庫名]
實例:
#mysql
表示使用當前登錄系統的用戶連接本機中mysql服務所建立的mysql數據庫
#mysql -h www.abc.com -u admin -p linuxadmin student
表示使用admin用戶連接www.abc.com 服務器中student庫
注:(1)當用mysql連接工具連接到服務器時,提示可能會出現以下情況:
mysql>
表示準備好接受新命令
mysql->
表示等待多行命令的下一行
mysql '>
表明一個一個以單引號“'”開臺的字符串尚示以單引號“'”結束
mysql ">
表明一個一個以雙引號<">臺的字符串尚示以雙引號<">結束
(2)退出mysql可以使用命令\q
3. 利用mysql客戶工具管理mysql服務器的數據庫
(1)建立數據庫
方法:
#mysql
mysql>CREATE DATABASE 數據庫名;
實例:
#mysql
mysql>CREATE DATABASE emple;
(2)顯示服務器中己建立的數據庫名稱
方法:
#mysql
mysql>show databases ;
注:在shell直接運行mysqlshow也可以顯示己建立數據庫名稱
(3)刪除數據庫
方法:
#mysql
mysql>DROP DATABASE 數據庫名;
實例:
#mysql
mysql>DROP DATABASE student;
(4)打開數據庫
方法:
#mysql
mysql>use 庫名;
實例:
#mysql
mysql>use emple
4. 數據表的管理
(1)建立表
方法:
#mysql
mysql>CREATE TABLE 表名(字段1 類型,
mysql(>字段2 類型,
mysql(>字段3 類型
..........................
..........................
mysql(>字段n 類型);
實例:
#mysql
mysql>CREATE TABLE users (userid char(6),
mysql(>name char(20),
mysql(>password char(10));
(2) 刪除表
方法:
#mysql
mysql>DROP TABLE 表名;
實例:
#mysql
mysql>DROP TABLE student;
(3) 查看錶中的數據
方法:
#mysql
mysql>SELECT 字段 [,字段.....] FROM 表名 [WHERE 條件];
實例:
#mysql
mysql>SELECT * FROM emple;
(4) 查看錶結構
方法:
#mysql
mysql>describe 表名;
實例:
#mysql
mysql>use users;
mysql>describe student;
(5) 顯示數據庫中己建立的表名
#mysql
mysql>show tables;
(6) 向表中添加數據
方法:
#mysql
mysql>INSERT INTO 表名(字段名[,字段名....]) VALUES(值[,值.........]);
實例:
#mysql
mysql>use users;
mysql>INSERT INTO student VALUES (‘0001’,’u1’,’u1pass’);
(7) 刪除表中的數據
方法:
#mysql
mysql>delect from 表名 [where 條件];
實例:
#mysql
mysql>use users;
mysql>delect from student ;
(8) 修改表中的數據
方法:
#mysql
mysql>update 表名 set 字段=值 where 條件;
實例:
#mysql
mysql>use users;
mysql>update student set password=’abcefg’ where userid=’0001’;
5. 索引管理
(1) 建立索引
方法:
#mysql
mysql>CREATE INDEX 索引名 ON 表名(列名);
實例:
#mysql
mysql>use users
mysql>CREATE INDEX in1 ON student (username);
(2) 顯示索引信息
方法:
#mysql
mysql>show index from 表名
實例:
#mysql
mysql>use users;
mysql>show index from student;
(3) 刪除索引
方法:
#mysql
mysql>DROP INDEX 索引名 ON 表名;
實例:
#mysql
mysql>use users
mysql>DROP INDEX in1 ON student;
6. 用戶管理
mysql數據庫用戶與LINUX系統用戶是相互獨立,它是用系統庫mysql的uesr表來存放用戶信息的;當客戶機試圖連接服務器時必須提供相應用戶和口令才允許連接,此時mysql服務器通過檢索user表進行身份驗證,下面介紹用戶管理的相關操作:
(1)建立用戶
方法:
#mysql
mysql>INSERT INTO user(host,user,password) VALUES (‘主機名’,’用戶名’,PASSWORD(‘密碼’));
實例:
#mysql
mysql>INSERT INTO user (host,user,password) VALUES (‘%’,’m1’,PASSWORD(’m1admin’);
用此種方法建立用戶可以連接服務器中,但不能對任何庫進行相應的操作
(2)刪除用戶
#mysql
mysql>delete from 表名 [where 條件]
(3)修改密碼
#mysqladmin -u 用戶名 password ‘密碼’
7. 權限管理
客戶機使用某個用戶連接到服務器上進行相關操作時,服務器將驗證客戶機身份是否有權進行此操作,數據庫權限主要有以下幾種:
select 讀取表的數據
insert 向表中插入數據
update 更新表中的數據
delete 刪除表中的數據
index 創建或刪除表的索引
alter 修改表的結構
create 創建新的數據庫和表
drop 刪除現存的數據庫和表
grant 將自己擁有的某些權限授予其他用戶
file 在數據庫服務器上讀取和寫入文件
reload 重新裝載授權表
shutdown 停止或關閉mysql服務
process 查看當前執行的查詢
(1) 添加用戶權限
方法:
#mysql
mysql>grant 權限 on 對象 to 用戶名 [identified by ‘密碼’] [with grant option]
實例:
#mysql
mysql>grant all on *.* to m1;
(2) 回收用戶權限
方法:
#mysql
mysql>revoke 權限 on 對象 from 用戶名;
實例:
#mysql
mysql>revoke insert on db1.t1 from u1;
四. Mysql的日誌管理和數據庫備份、恢復
1. Mysql數據目錄的結構
通過rpm包安裝的mysql數據目錄爲/var/lib/mysql,在該目錄中存放的是數據庫的數據目錄,每個數據目錄中存放的文件主要包括:
*.frm 包含表結構描述信息
*.MYD 包含表的數據信息
*.MYI 包含數據文件中任何索引的索引樹,無論該表有無索引,索引文件都存在
2. Mysql日誌文件分類
(1)錯誤日誌
錯誤日誌作爲mysql服務器標準錯誤輸出的重定向,包含了服務器寫入標準錯誤輸出設備的所有消息,同時還包含了mysql服務的啓動和關閉事件,該類日誌記錄在/var/log/mysql.log文件中
(2) 常規日誌
常規日誌用來記錄有關mysql服務器運行的常規信息,包括用戶的連接、查詢以及其他各種事件;該日誌文件存放在/var/lib/mysql目錄中。
(3) 更新日誌
更新日誌用來記錄修改數據庫的查詢信息,包括insert、update、delete、replace等所有涉及數據庫修改的SQL語句的查詢記錄;該類日誌存放在/var/log/mysql目錄中。
3. 配置日誌文件的路徑
#vi /etc/my.cnf
[mysqld]
…………..
…………
……………
………………..
[safe_mysqld]
…………….
err-log=/var/log/mysqld.log //指定錯誤文件的路徑
………………….
log //啓用常規日誌功能
log-update //啓用更新日誌功能。
…………….
……………………
4. 查看日誌
日誌文件爲一般的文本文件,所以使用任意一種中文本編輯軟件或文本輸出工具都可以查看日誌的內容,例如:
#more /var/log/mysqld.log
5. 數據庫的備份
方法:
#mysqldump [-u 用戶名] [-p 密碼] [選項] 數據庫名>備份路徑
實例:
#mysqldump -u root -p admin --opt db1>/bak/db1.sql
6. 恢復數據庫
方法:
#mysql [-u 用戶名] [-p 密碼] 庫名<備份庫存放的路徑
實例:
#mysql -u root -padmin db1</bak/db1.sql
7. Mysql的圖形管理工具
mysqlGUI
phpadmin