一. 数据库服务器的基本概念
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