文档内容
MySQL 数据库
MySQL(发音为"my ess cue el",不是"my sequel")是一种开放源代
码 的关系型数据库管理 系统(RDBMS),MySQL数据库系统使用最常用的数据库
管理语言--结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在 General Public
License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度
可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,
MySQL是管理内容最好的选择。
MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南
和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL
AB创始人之一的Monty Widenius 的女儿也叫My。这两个到底是哪一个给出
了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用
户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由
来自非洲斯威士兰的开源软件开发者 Ambrose Twebaze 提供。根据Ambrose
所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌
干达附近的坦桑尼亚的Arusha的一个小镇的名字。
MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都
了解到这个数据库。它的历史也富有传奇性。
MySQL的历史最早可以追溯到1979年,那时Oracle也才小打小闹,微软
的SQL Server影子都没有。有一个人叫Monty Widenius, 为一个叫TcX的
小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内存的
计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当
时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。
可是,这个小公司资源有限,Monty天赋极高,面对资源有限的不利条件,
他反而更能发挥潜能,总是力图写出最高效的代码。并因此养成了习惯。与
Monty同在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到
20年后,而Monty却做到了。
1990年,TcX的customer 中开始有人要求要为它的API提供SQL支持,
当时,有人想到了直接使用商用数据库算了,但是Monty觉得商用数据库的速
度难令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎
中。但不巧的是,效果并不太好。于是, Monty雄心大起,决心自己重写一个
SQL支持。
1996年,MySQL 1.0发布,只面向一小拨人,相当于内部发布。到了96年
10月,MySQL 3.11.1发布了,呵呵,没有2.x版本。最开始,只提供了Solaris
下的二进制版本。一个月后,Linux版本出现了。紧接下来的两年里,MySQL依次移植到各个平台下。它发布时,采用的许
可策略,有些与众不同:允许免费商用,但是不能将MySQL与自己的产品绑定
在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花银子。当然,
商业支持也是需要花银子的。其它的,随用户怎么用都可以。这种特殊许可为
MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。(细想想,
PostgreSQL曾经有几年限入低谷,可能与它的完全免费,不受任何限制有关
系)。
MySQL3.22应该是一个标志性的版本,提供了基本的SQL支持。
MySQL关系型数据库 于1998年1月发行第一个版本。它使用系统核心提
供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、
Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字
段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。
1999-2000年,有一家公司在瑞典成立了,叫MySQL AB (不知道AB是什
么意思,待查)。 雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引
擎, 因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。
2000年4月,MySQL对旧的存储引擎进行了整理,命名为MyISAM。同时,
2001年,Heikiki Tuuri向MySQL提出建议,希望能集成他们的存储引擎
InnoDB,这个引擎同样支持事务处理,还支持行级锁 。
如今,遗憾的是,BDB和InnoDB好像都被Oracle收购了,为了消灭竞争对
手,哪怕是开源的,都是不择手段 。
MySQL与InnoDB的正式结合版本是4.0。
到了MySQL5.0,2003年12月,开始有View, 存储过程之类的东东,当然
其间, bug也挺多。
在2008年1月16号 MySQL被Sun公司收购。
最近,MySQL的创始人Monty Widenius 已经向Sun提交了辞呈。head都
要走了。
据说,被Sun收购的公司多薄命,不知道MySQL今后前途如何,希望一路
走好。相信MySQL的生命力还是很长久的。
时至今日 mysql 和 php 的结合绝对是完美.很多大型的网站也用到
mysql数据库.mysql的发展前景是非常光明的!
编辑本段 MySQL数据库的导入
MySQL数据库的导入,有两种方法:
1) 先导出数据库SQL脚本,再导入;
2) 直接拷贝数据库目录和文件。
在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不
兼容的情况发生。
所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。2. 方法一 SQL脚本形式
操作步骤如下:
2.1. 导出SQL脚本
在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump命令行,
导出SQL脚本。
2.1.1 用phpMyAdmin工具
导出选项中,选择导出“结构”和“数据”,不要添加“DROP
DATABASE”和“DROP TABLE”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的SQL文件保存下来。
2.1.2 用mysqldump命令行
命令格式
mysqldump -u 用户名 -p 数据库名 > 数据库名.sql
范例:
mysqldump -u root -p abc > abc.sql
(导出数据库abc到abc.sql文件)
提示输入密码时,输入该数据库用户名的密码。
2.2. 创建空的数据库
通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库
全权用户为abc_f。
2.3. 将SQL脚本导入执行
同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者
mysql命令行。
2.3.1 用phpMyAdmin工具
从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面 。
在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并
执行。
注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也
有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可
获得1:5或更高的压缩率。
gzip使用方法:
# gzip xxxxx.sql
得到
xxxxx.sql.gz文件。
提示输入密码时,输入该数据库用户名的密码。
3 直接拷贝如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统
之间可能不兼容,要慎用。
3.1 准备原始文件
用tar打包为一个文件
3.2 创建空数据库
3.3 解压
在临时目录中解压,如:
cd /tmp
tar zxf mydb.tar.gz
3.4 拷贝
将解压后的数据库文件拷贝到相关目录
cd mydb/
cp * /var/lib/mysql/mydb/
对于FreeBSD:
cp * /var/db/mysql/mydb/
3.5 权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/mydb/*
chmod 660 /var/lib/mysql/mydb/*