防伪码:锲而舍之,朽木不折;锲而不舍,金石可镂
第三章、MySQL数据库系统
目前,比较主流的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是自由或开放源码软件(FLOSS),因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
为方便演示,我们将使用图形化界面讲解MySQL基本操作、备份恢复以及用户授权
一、起源
a、MySQL是开源的关系型数据库服务器软件
b、目前由Oracle公司开发和维护
c、官网:http://uuu.mysql.com/
二、优点
a、多线程、多用户
b、基于C/S(客户端/服务器)架构
c、高性能、高可靠、易于使用
3、MySQL的编译安装
三、MySQL编译安装
1、准备工作:
a、确认没有使用rpm方式安装,否则建议将其卸载
rpm -q mysql-server mysql(查询状态)
rpm -ivh /media/RHEL_6.5\ x86_64\ Disc\ 1/Packages/ncurses-devel-5.7-3.20090208.el6.x86_64.rpm(安装自带的ncurses-devel包,即软件开发包)
b、cmake编译安装
2、源码编译安装
a、创建运行用户,此处以用户和组都为mysql
b、解包
c、配置(默认使用字符集utf8,并且添加其他字符集的支持)
字符如下:
cmake -DCMAKE_INSTALL_PREFIX(MySQL数据库程序存放目录)=/usr/local/mysql
-DSYSCONFDIR(初始化参数文件目录)=/etc
-DDEFAULT_CHARSET(默认字符集编码,如utf8)=utf8
-DDEFAULT_COLLATION(默认字符集校对规则)=utf8_general_ci
-DWITH_EXTRA_CHARSETS(额外支持的其他字符集编码)=all
d、编译并安装
3、安装后的调整
a、对数据库目录进行权限设置
b、建立配置文件(一般选择my-medium.cnf即可,该文件能够满足大多数企业的中等应用需求)
注:MySQL服务器的配置文件默认位于/etc/my.cnf
MySQL端口号:3306
SQLServer端口号:1433(面试题)
c、初始化数据库
以内置账户执行初始化脚本mysql_install_db,指定数据存放目录
/usr/local/mysql/scripts/mysql_install_db
--user=mysql --basedir(基本目录)=/usr/local/mysql
--datadir(数据目录)=/usr/local/mysql/data/
d、设置环境变量(即每次开机会自动加载识别)
注:. /etc/profile(空格代表另一个目录在执行)
4、添加系统服务(便于chkconfig进行管理)
注:将support-files文件夹下的mysql.server脚本,复制到/etc/rc.d/init.d目录下,
改名为mysqld,设置执行权限,然后将mysqld添加为系统服务
然后启动服务,查看运行状态,监听端口
访问数据库;
mysqladmin -u root -p password ‘新密码‘(为安全起见,建议更改初始密码,默认无密码)
mysql -u root -p
exit或quit可以退出mysql命令工具
四、使用MySQL数据库
1、查看数据库结构
show database(查看库)
use mysql;
show tables;(切换到mysql数据库,查看表)
查看表的结构(以user表为例)
use user;
describe user;
2、创建及其删除库和表(此处以benet库,366班级为例)
创建benet数据库
创建学生表(列:name 数据类型:char (48))、default默认密码字串、primary表示以name做主键
password表示密码为密文)
插入数据并查询
增删改查的语句和sqlserver的语句完全一样,可参考sqlserver语句,这里不再详细演示
五、维护MySQL数据库(重点)
1、数据库用户授权
频繁使用root账号会给服务器带来一定的安全风险,实际工作中,会建立一些低权限的用户,
给予相应的权限,从而使数据库的风险降至最低
REVOKE 权限列表 on 库名.表名 to 用户名@来源地址 identified by ‘密码’
权限列表: 增删改查,以逗号分离
库名.表名:可使用通配符“*”,例如使用“benet.*”表示benet数据库中的所有表
用户名@来源地址:谁能连接,从哪里连接;可使用通配符“%”,表示某个区域或网段内所有地址
identified:用户连接数据库时所使用的密码字符串,若省略,则密码为空
实验演示(添加“xiaoming”用户,允许从本机访问,对benet数据库中的所有表具有查询权限,
验证密码为“123456”):
查看权限:show grants for 用户名@来源地址
撤销权限:revoke 权限列表 on 数据库名.表名 from 用户名@来源地址
2、数据库的备份与恢复
及时备份数据库时信息安全管理的重要工作内容之一,MySQL数据库备份可采用多种方式
A、可直接备份目录 /usr/local/mysql/var
或B、使用专用备份工具 mysqldump
本章主要讲解MySQL自带的倾倒工具mysqldump为例
格式1:导出库中的部分表
mysqldump 选项 表名1 表名2 > /备份路径/备份文件名
格式2:导出一个或多个完整的库(含其中的表)
mysqldump 选项 --database > /备份路径/备份文件名
格式3:备份MySQL服务器中所有数据库
mysqldump 选项 --databases > /备份路径/备份文件名
恢复数据库:mysql 选项 库名 表名 < /备份路径/备份文件名
实验演示:
格式1(以root的身份,备份benet数据库中的t366表,名为benet-t366.sql)
格式2(以root的身份,备份benet数据库,名为benet.sql)
格式3(以root的身份,备份mysql所有的数据库,名为all-data.sql)
查看备份文件内容(使用grep,less,cat等文本工具可以查看脚本内容)
恢复数据库(删除表t366,然后恢复)
验证导入结果:
实验到此就演示完毕了,希望大家学以致用!谢谢!