学习情境2.3 MySQL数据库架设
2.3.1 学习要点
1.知识点:熟悉MySQL的安装和启动步骤,熟悉MySQL数据目录
2.技能点:掌握MySQL的用户和权限设置,学会使用基于GUI和Web的MySQL客户端程序
2.3.2 任务描述
建立MySQL的帐号与MySQL组,家目录指向/usr/local/mysql,安装MySQL原码软件,MySQL数据库服务能正常启动。建立mis数据库,建立用户manager对数据库mis有管理权限。
2.3.3 相关知识
1.MySQL的发展
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1 月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。不管怎样,在经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许用于mSQL而写的第三方代码更容易移植到MySQL。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
2.MySQL管理
可以使用命令行工具管理MySQL数据库(命令mysql和mysqladmin),也可以从MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query Browser。
phpMyAdmin是由php写成的MySQL资料库系统管理程式,让管理者可用Web界面管理MySQL资料库。
phpMyBackupPro也是由PHP写成的,可以透过Web介面创建和管理数据库。它可以创建伪cronjobs,可以用来自动在某个时间或周期备份MySQL数据库。
另外,还有其他的GUI管理工具,例如早先的mysql-front以及emsmysqlmanager,navicat等等。
3.Mysql最常见的应用架构
单点(Single),适合小规模应用。
复制(Replication),适合中小规模应用。
集群(Cluster),适合大规模应用。
4.Mysql存储引擎
MyISAM Mysql的默认数据库,最为常用。拥有较高的插入、查询速度,但不支持事务。
InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定。
BDB源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性
Memory所有数据置于内存的存储引擎,拥有极高的插入、更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在MySQL重新启动时丢失。
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用。
Archive非常适合存储大量的、独立的、作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差。
Federated将不同的MySQL服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用。
Cluster/NDB高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用。
CSV逻辑上由逗号分割数据的存储引擎。
BlackHole黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继。
5.MySQL的基本命令
(1)连接MySQL。
格式:mysql-h主机地址-u用户名-p用户密码
例1:连接到本机上的MYSQL
#/usr/local/mysql/bin/mysql-u root–p //用MySQL管理账户root登陆
Enter password: //输入MySQL的管理账号root密码,默认为空
Welcome to the MySQLmonitor. Commands end with;or\g.
Your MySQL connection id is 2
Server version:5.1.32 Source distribution
Type'help;'or'\h'for help.Type'\c'to clear the buffer.
mysql> //mysql交互界面
(2)显示命令(如表2.3.1所示)
表2.3.1 命令

(续表)

6.MySQL的图形界面管理
为了方便用户对MySQL数据库进行管理,下面介绍常用的GUI客户端程序MySQL Control Center。
MySQL Control Center是一个功能齐全的基于GUI的MySQL客户端程序,可以跨平台操作。它提供了多种风格的用户界面,并且支持简体中文,非常易于操作。操作界面甚至与SQL Server数据库系统的客户端工具企业管理器(Enterprise Manager)极为相似。因此,无论在功能上还是在界面上,Mysql Control Center都可以与商业数据库系统提供的,基于GUI的客户端程序相媲美。
其安装和服务器建立连接的过程如下:
(1)对tar.gz的压缩包解压
#tar xvzfmysqlcc-Linux.tar.gz
(2)进入解压缩的目录,执行mysqlcc
#cd mysqlcc-0.9.4-Linux-glibc22
#./mysqlcc
(3)MySQL默认管理员root,密码为空,主机地址localhost,测试连接成功,如图2.3.1所示。

图2.3.1 数据库连接
(4)单击OK按钮后就可以对数据库进行操作了
(5)建库,建表,建用户
建库:鼠标右键数据库→新数据库,输入数据库名字,如图2.3.2所示。

图2.3.2 新建数据库
建表:鼠标右键表→新建数据表,如图2.3.3所示。

图2.3.3 新建数据表
建用户:鼠标右键用户管理→新用户,如图2.3.4所示。

图2.3.4 新建系统用户
2.3.4 任务实施
建立MySQL的账号与MySQL组,家目录指向/usr/local/mysql,安装MySQL原码软件,MySQL数据库服务能正常启动。建立mis数据库,建立用户manager对数据库mis有管理权限。
1.下载Mysql原码包
(1)MySQL源码分发版为tar压缩文件,文件名格式为mysql-VERSION.tar.gz,其中VER⁃SION是版本号。从www.mysql.org下载MySQL软件包mysql-5.1.29-rc.tar.gz到本地的Linux服务器上。
(2)用tar指令解压软件
#tar xvzfmysql-5.1.29-rc.tar.gz
2.创建mysql组与用户,并对mysql目录赋权
(1)添加mysql组,mysql用户
#groupadd mysql
添加mysql组
#useradd-d/usr/local/mysql -gmysql mysql
添加mysql用户,其家目录设置在/usr/local/mysql,所属组为mysql
(2)改变mysql原码目录的拥有者属性
#chown–R mysql:mysqlmysql-5.1.29-rc
目录mysql-5.1.29-rc下的文件与子目录的创建人为mysql,组为mysql。
3.安装MySQL数据库
(1)切换到mysql用户
#su mysql-//su表示用户切换
(2)配置mysql并且编译
$./configure–—prefix=/usr/local/mysql–—with-charset=gb2312
//配置MySQL安装目录在/usr/local/mysql,数据库编码为gb2312
$make
编译
$make install
4.创建MySQL授权表
$cd/usr/local/mysql
$bin/mysql_install_db//安装授权表
5.启动MySQL
#/usr/local/mysql/share/mysql/mysql.server start
Starting MySQL.. [确定]
6.建立mis数据库
数据库→右键新数据库,如图2.3.5所示。

图2.3.5 新数据库mis
7.建立用户manager对数据库mis有管理权限
用户管理→新用户,如图2.3.6所示。

图2.3.6 添加用户
注意:主机处输入%(统配符),表示任何IP都可以访问。全部权限表示用户具有对mis数据库的所有sql操作。授权选项表示具有数据库管理员权限。
2.3.5 考核要点
表2.3.2 mysql数据库架设考核要点

2.3.6 能力拓展
1.安装MySQL。
2.(1)停止MySQL数据库。
(2)启动MySQL。
3.(1)显示出所有的数据库。
(2)显示数据库test里表的信息。
(3)新建数据库menagerie。
(4)新建menagerie数据库,新建表(pet表),字段为“名字、主人、种类,性别、出生和死亡日期”。
(5)显示menagerie数据库表的信息,并查看pet表的表结构。
4.将以下的信息导入到pet表中,注意各记录之间用回车符分隔,各字段值用空格键分隔。
Fluffy Harold cat f 1993-02-04
Claws Gwen catm 1994-03-17
Buffy Harold dog f 1989-05-13
Fang Benny dogm 1990-08-27
Bowser Diane dogm 1998-08-30 1995-07-29
Chirpy Gwen bird f 1998-09-11
Whistler Gwen bird m 1997-12-09
Slim Benny snakem 1996-04-29
5.(1)查看MySQL的环境变量,及最大连接数。
(2)编辑/usr/bin/safe_mysqld,找到mysqld启动的那两行,在后面加上参数:-O max_connections=1500。
(3)重启MySQL服务。
6.(1)修改MySQL的客户端/服务端的字符编码为utf8。
(2)拷贝/usr/share/mysql/my-large.cnf到/etc/,改名为my.cnf。
(3)在client和mysald段中加入default-character-set=utf8。
(4)重启mysqld服务。
(5)登入MySQL,查看环境变量中的字符编码。
(6)创建数据库study,指定utf8字符编码。
(7)进入study数据库,查询数据库编码。
7.(1)查看MySQL系统的用户。
(2)新建一个用户pmg51,密码为pmg51,有所有数据库操作权限,所有IP登录的权限,并且有grant的权限。
(3)执行一个FLUSH PRIVILEGES语句告诉服务器再装载授权表。
(4)再查看MySQL系统的用户。
(5)用pmg51登录系统,指定登入的数据库为menagerie。
(6)显示当前pmg51用户连接的数据库。

