- 1970年,在IBM公司工作的数学家 E.F.Codd 发表了数学论文 《大型共享数据库的关系数据模型》 ,首次提出关系和关系运算的概念,奠定了关系型数据库的理论模型。
- 1973年,IBM公司增加了更多的研究人员研究这个项目,这个项目就是著名的 System R 。
- 1974年, E.F.Codd 的同事 Don Chamberlin 将 Codd 的论文和关系运算,转换成为比较容易理解和使用的SQL语言,并且在后面成为所有关系型数据库的标准。
- 1976年,E.F.Codd 发表了一篇里程碑的论文 《R系统:数据库关系理论》 ,介绍了关系数据库理论和查询语言SQL。
- 1977年,加州大学伯克利分校的 Michael Stonebraker 和 EugeneWong 利用 System R 已发布的信息开发自己的关系数据库系统 Ingres。同年,Oracle 的创始人 LarryEllison 也在非常仔细地阅读了 E.F.Codd 博士的篇论文后,决定拉几个小伙伴开公司创业。
- 1979年,Oracle 发布了第一个商用版本(出于营销考虑,该公司对外宣称是该产品的第二版)
- 1983年,IBM 发布了 DATABASE 2(DB2)for MVS(内部代号为"Eagle")
- 1986年,Michael Stonebraker 教授项目启动 Postgres 项目,此项目是由美国防务高级研究项目局(DARPA), 陆军研究办公室(ARO),国家科学基金(NSF), 以及 ESL, Inc 共同赞助的。
- 1987年, Sybase 公司推出数据库产品。
- 1989年,Microsoft、Sybase 和 Ashton-Tate 三家公司共同开发、推出了 SQL Server 第一个版本(Ashton-Tate/Microsoft SQL Server 1.0 for OS/2),随后 Microsoft 终止了与 Ashton-Tate 的合作。
- 1994年,Microsoft 终止了与 Sybase 的合作,在买下了 Windows NT 版本的 SQL Server 全部版权后就开始完全独立开发;同年 Andrew Yu 和 Jolly Chen 向 Postgres 中增加了 SQL 语言的解释器,并随后(1995年5月1日)用新名字 Postgres95 将源代码发布到互联网上供大家使用。
- 1996年,MySQL 发布1.0版, 同年 Postgres95 更名为:PostgreSQL 。
- 2005年,MySQL 发布5.0版,加入了游标,存储过程,触发器,视图和事务的支持。
- 2009年,Oracle 公司以74亿美元收购Sun公司,自此 MySQL 数据库进入 Oracle 时代。
- 2016年,Oracle 决定跳过 MySQL 5.x 命名系列,并抛弃之前的 MySQL 6,7 两个分支(从来没有对外发布的两个分支),直接进入 MySQL 8 版本命名,也就是 MySQL 8.0 版本。
哪有什么岁月静好,现实永远是江河奔流。这里朱哥还要单独说一下 Michael Stonebraker 博士。他在加州大学伯克利分校开启 Ingres 项目时,就将所有源代码都放在了学校的FTP服务器上,并对所有人开放。可以说 Ingres 影响了后来的几乎所有的商业数据库产品。好了,接下来回到本文的主角:MySQL 。
MySQL 是目前最受欢迎的开源的关系型数据库管理系统,她最早来源于MySQL AB公司的ISAM与mSQL项目。与其他数据库管理系统相比,她具有以下优势:
- MySQL是一个关系数据库管理系统;
- MySQL是开源免费的;
- MySQL服务器是一个高效的、可靠的和易于使用的数据库服务器;
- MySQL服务器可以工作在客户/服务器或嵌入系统中;
- 有大量的MySQL软件可以使用。
MySQL 的创始人Michael Widenius ,曾在2008年以10亿美元的价格,将自己创建的MySQL AB公司卖给了Sun公司。可就在随后的2009年,Oracle又以74亿美元的价格收购了Sun公司。MySQL的所有权也就落入Oracle的手中。由于担心Oracle可能会将MySQL闭源,Michael Widenius决定离开Oracle,并领导创建了新项目 MariaDB。不过十多年后的今天,我们欣喜地看到Oracle并没有扼杀MySQL,反而在不断增加MySQL的研发投入。另一面,MariaDB 近几年也是搞得红红火火、风光无限!不得不说,这真是个多赢的局面。
好了,八卦唠完,进入正题!
一. Windows下安装MySQL
1.1 下载
我们可以在MySQL官网的下载页面,下载的MySQL安装文件。
下载页面: https://dev.mysql.com/downloads/mysql/
同样是推荐大家下载 zip 文件。当前的最新版是:mysql-8.0.19-winx64.zip
。相比之前的老版本,MySQL 8.0做了很多、很大的改变。注意: 接下来的操作都是基于MySQL 8.0版本的,可能并不适用于其他较低的版本。
1.2 解压文件
我们提前创建好安装目录:D:devdb
,如:
将下载好的压缩包 mysql-8.0.19-winx64.zip
解压至【安装目录】,注意将 mysql-8.0.19-winx64
重命名为 mysql
:
接下来,创建目录:D:devdbmysql_data
作为数据目录:
1.3 初始安装
1.3.1 初始化
以【管理员】身份打开【命令提示符】,进入【安装目录】下的【bin】目录,如:D:/dev/db/mysql/bin
。
执行以下命令,初始化MySQL:
mysqld --basedir=D:/dev/db/mysql --datadir=D:/dev/db/mysql_data --initialize --console
注意: basedir
为MySQL的安装目录;datadir
为MySQL的数据目录。
如果你在执行命令时出错,提示类似下面这种信息:
代表你的系统中缺少相应的
Microsoft Visual C++
运行时环境,朱哥已经为大家准备好了相关的安装文件,下载后挨个安装一遍就好。下载地址:https://pan.baidu.com/s/1svs7LidmcnhV9jvLZrVIyQ安装好VC运行时后,请重新执行 初始化MySQL的命令。
初始化成功后,千万不要关闭命令行窗口,我们需要记录下为 root
用户自动生成的初始密码:
如上图,窗口中提示:
[Server] A temporary password is generated for root@localhost: bg5/&qyT6tf>
则本次生成的密码是:bg5/&qyT6tf>
,你也需要记录下你的密码,一会儿登录MySQL时会用到。
1.3.2 配置文件
在 D:/dev/db/mysql_data
目录下手动创建一个文本文件,并重命名为:mysql.ini
,作为MySQL的配置文件。
编辑该配置文件,添加以下内容:
[client]
default-character-set=utf8mb4
port = 3306
[mysqld]
port = 3306
basedir = D:/dev/db/mysql
datadir = D:/dev/db/mysql_data
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-time_zone="+8:00"
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
max_allowed_packet = 256M
max_connections=20
[mysqldump]
quick
max_allowed_packet = 256M
[mysql]
default-character-set=utf8mb4
auto-rehash
注意: MySQL 8.0 开始需要指定服务器时区,以上配置内容都是最基本的。如无必要,请勿删减。大家可以根据实际情况,修改 port
、basedir
、datadir
等配置项的值。
1.3.3 安装服务
在命令行窗口,继续执行以下命令以安装MySQL服务:
mysqld --install MySQL --defaults-file=D:/dev/db/mysql_data/mysql.ini
1.3.4 启动服务
在命令行窗口,继续执行以下命令以启动MySQL服务:
net start MySQL
1.4 登录MySQL
1.4.1 初始登录
在命令行窗口,下输入登录命令登录MySQL:
mysql -uroot -p
【回车】后,根据提示输入【1.3.1】节中,自动生成的初始密码即可登录:
1.4.2 修改密码
自动生成的初始密码不方便记忆,我们可以通过执行以下语句修改root用户密码:
ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "123456";
这样,我们就将 root
用户的密码修改为:123456
了。
可选: 如果要允许root用户远程登录,可以执行以下语句:
#root可从任何IP登录,注意修改密码"123456" GRANT ALL PRIVILEGES ON *.* TO "root"@"%" IDENTIFIED BY "123456" WITH GRANT OPTION;
1.5 删除服务
当我们需要卸载MySQL时,可以参照以下流程:
-
停止
MySQL
服务,在以管理员身份打开的命令行窗口中,执行以下命令:net stop MySQL
-
继续执行以下命令,删除
MySQL
服务:sc delete MySQL
至此,MySQL就已经卸载了,无任何残留。你可以继续删除:D:devdbmysql
和 D:devdbmysql_data
两个目录。但是朱哥必须负责任的告诉你:数据无价,操作需谨慎!!!
二. Docker 安装MySQL
在容器化已成为事实标准的今天,我们可以方便地通过 Docker
安装 MySQL。接下来朱哥还是在 CentOS 7
主机,为大家做演示。
2.1 准备
朱哥再次提醒各位:数据无价,操作需谨慎!!! 因此,我们提前创建数据目录以存放MySQL的数据文件,如:
[root@centos ~]# mkdir /data
[root@centos ~]# mkdir /data/mysql
我们创建数据目录为:/data/mysql
2.2 拉取镜像
执行 Docker 命令,拉取最新的 MySQL 镜像:
docker pull mysql
下载时间可能会比较长,请耐心等待执行完成...
2.3 运行容器
执行 Docker 命令运行一个容器:
docker run -d --name mysql
-p 3306:3306
-v /data/mysql:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
mysql:latest
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
就这么简单,MySQL已经安装、运行成了!往后如果要再次启动该容器,只需执行:
docker start mysql
2.4 停止与删除
如果要停止运行中的 MySQL 容器,可以执行 Docker 命令:
docker stop mysql
如果要删除 MySQL 容器,可以执行 Docker 命令:
docker rm mysql
三. 总结
今天朱哥又和大家唠叨了一堆关于数据库的事儿,也演示了在 Windows 和 Docker 中安装 MySQL 详细步骤。希望能对你有所帮助。对比一下Windows 和 Docker 这两种安装方式,相信大家也能感受到Docker的强大与便捷。关于Docker以及MySQL的进阶配置,朱哥会在后续的文章中继续唠叨,敬请关注!
更多知识干货,请关注我的公众号:唠码客