时间:2021-07-01 10:21:17 帮助过:25人阅读
第三章、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
![EV2F5)ORF(G3NA7KCF]Y~EA.png 技术分享](http://s3.51cto.com/wyfs02/M02/86/F0/wKioL1fPdtDAhzxYAAA_JZZqga8923.png-wh_500x0-wm_3-wmp_4-s_3214191292.png)
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、编译并安装
![N2)D46415L5NHUIX5]ER0H2.png 技术分享](http://s1.51cto.com/wyfs02/M02/86/F0/wKioL1fPedfSIlwyAAAMW7s3_Bs734.png-wh_500x0-wm_3-wmp_4-s_3595416585.png)

3、安装后的调整
a、对数据库目录进行权限设置
![95Z6[KT}FKR]@AGW28EG31L.png 技术分享](http://s3.51cto.com/wyfs02/M01/86/F2/wKiom1fPen6jtDVWAAARFhFXD8Q102.png-wh_500x0-wm_3-wmp_4-s_616322063.png)
b、建立配置文件(一般选择my-medium.cnf即可,该文件能够满足大多数企业的中等应用需求)
![%HRP0$M)VPO6KP(Y]02%K_6.png 技术分享](http://s2.51cto.com/wyfs02/M01/86/F1/wKioL1fPewPRlhm3AAASDXpg5d8677.png-wh_500x0-wm_3-wmp_4-s_2635739063.png)
注: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数据库,查看表)
![6VBFW]$XJ5Z%78S{_JM7L}3.png 技术分享](http://s2.51cto.com/wyfs02/M02/86/F1/wKioL1fPgZvDGEjhAAAeo6IAqzY386.png-wh_500x0-wm_3-wmp_4-s_1501447067.png)
查看表的结构(以user表为例)
use user;
describe user;

2、创建及其删除库和表(此处以benet库,366班级为例)
创建benet数据库

创建学生表(列:name 数据类型:char (48))、default默认密码字串、primary表示以name做主键
password表示密码为密文)
![MR@JS`XNEH])LRSTR2UTRMT.png 技术分享](http://s4.51cto.com/wyfs02/M01/86/F2/wKiom1fPhKTQBT_dAABe84-y6AU036.png-wh_500x0-wm_3-wmp_4-s_2322633688.png)
插入数据并查询

增删改查的语句和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)
![01~~`L5CQ[[JCRP]K)`9UJN.png 技术分享](http://s2.51cto.com/wyfs02/M01/86/F3/wKiom1fPkJihJLtWAAAP2UJy_aY570.png-wh_500x0-wm_3-wmp_4-s_1577008833.png)
格式3(以root的身份,备份mysql所有的数据库,名为all-data.sql)

查看备份文件内容(使用grep,less,cat等文本工具可以查看脚本内容)

恢复数据库(删除表t366,然后恢复)
![Z[%CIZU}O0$]I$Q%SNE6(8X.png 技术分享](http://s3.51cto.com/wyfs02/M02/86/F3/wKiom1fPkriBpqQ7AAALPZi7F58939.png-wh_500x0-wm_3-wmp_4-s_2879031205.png)

验证导入结果:

实验到此就演示完毕了,希望大家学以致用!谢谢!
本文出自 “一盏烛光” 博客,谢绝转载!
第三章 MySQL数据库系统
标签:oracle 服务器 多线程 数据库系统 杨文