<audio id="audio" title="环境准备 | 带你安装MySQL和图形化管理工具Workbench" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/8c/09/8c3e876ba8a2ae87e5fab3e6d85dcb09.mp3"></audio>

你好，我是朱晓峰。这节课，我来手把手带你安装和配置MySQL。

俗话说，“巧妇难为无米之炊”，我们不能凭空学习理论知识，必须要在实际的MySQL环境中进行操作，这是一切操作的基础。同时，我还会带你安装MySQL自带的图形化管理工具Workbench，我们之后要学习的表的关联、聚合、事务，以及存储过程等，都会用到它。

我会借助图文和音频给你介绍知识重点和操作要领，同时，我还录制了相应的视频，来展示具体的操作细节。你可以根据自己的习惯和需求，选择喜欢的形式来学习。

<video poster="https://media001.geekbang.org/599736e1aad64df7aa8ffa746ebaa675/snapshots/ab93681c22c74e0399a77a31f98af18b-00005.jpg" preload="none" controls=""><source src="https://media001.geekbang.org/customerTrans/7e27d07d27d407ebcc195a0e78395f55/488aa8b2-17810dc979a-0000-0000-01d-dbacd.mp4" type="video/mp4"><source src=" https://media001.geekbang.org/0bb39f75acf9400390ba54e0b99ebed2/5246c421f99f45329b88030a012a440a-3c473d8f9e4e8965bf525b201e121eba-sd.m3u8" type="application/x-mpegURL"></video>

好了，话不多说，我们先来安装MySQL。

## 安装与配置

首先，我们要下载MySQL的安装包，具体做法是，打开浏览器，输入网址：[https://dev.mysql.com](https://dev.mysql.com/)，进入MySQL的开发者专区进行下载。

在下载界面，你会看到需要选择操作系统。这是因为，MySQL可以在多种操作系统平台上运行，包括Windows、Linux、macOS等，因此，MySQL准备了针对不同操作系统平台的安装程序。这里我们主要介绍MySQL在Windows操作系统上的安装。因为Windows平台应用得最广泛，而且图形化操作也比较简单。

当然，如果你想了解Linux平台和macOS平台上的安装和配置，也可以通过官网[https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html](https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html) 和[https://dev.mysql.com/doc/refman/8.0/en/osx-installation.html](https://dev.mysql.com/doc/refman/8.0/en/osx-installation.html) 来进行查看。不同平台上的MySQL会略有不同，比如，同样的机器配置，Linux上的MySQL运行速度就比Windows快一些，不过它们支持的功能和SQL语法都是一样的，即使你使用的是其他系统，也不会影响到我们的学习。

好了，下载完成之后，我们就可以开始安装了。接下来我给你介绍下安装步骤。

**第一步：点击运行下载的安装程序，安装MySQL数据库服务器及相关组件**

<img src="https://static001.geekbang.org/resource/image/4c/3b/4cd932563b3c91fac740154bd68e093b.png" alt="">

我给你介绍下这些关键组件的作用。

1. MySQL  Server：是MySQL数据库服务器，这是MySQL的核心组件。
1. MySQL  Workbench：是一个管理MySQL的图形工具，一会儿我还会带你安装它。
1. MySQL  Shell：是一个命令行工具。除了支持SQL语句，它还支持JavaScript和Python脚本，并且支持调用MySQL API接口。
1. MySQL  Router：是一个轻量级的插件，可以在应用和数据库服务器之间，起到路由和负载均衡的作用。听起来有点复杂，我们来想象一个场景：假设你有多个MySQL数据库服务器，而前端的应用同时产生了很多数据库访问请求，这时，MySQL  Router就可以对这些请求进行调度，把访问均衡地分配给每个数据库服务器，而不是集中在一个或几个数据库服务器上。
1. Connector/ODBC：是MySQL数据库的ODBC驱动程序。ODBC是微软的一套数据库连接标准，微软的产品（比如Excel）就可以通过ODBC驱动与MySQL数据库连接。

其他的组件，主要用来支持各种开发环境与MySQL的连接，还有MySQL帮助文档和示例。你一看就明白了，我就不多说了。

好了，知道这些作用，下面我们来点击“Execute”，运行安装程序，把这些组件安装到电脑上。

**第二步：配置服务器**

等所有组件安装完成之后，安装程序会提示配置服务器的类型（Config Type）、连接（Connectivity）以及高级选项（Advanced Configuration）等，如下图所示。这里我重点讲一下配置方法。

<img src="https://static001.geekbang.org/resource/image/f3/07/f3a872586836d57355a022bc3852a107.png" alt="">

我们主要有2个部分需要配置，分别是**服务器类别**和**服务器连接**。

先说服务器类别配置。我们有3个选项，分别是开发计算机（Development Computer）、服务器计算机（Sever Computer）和专属计算机（Dedicated Computer）。它们的区别在于，**MySQL数据库服务器会占用多大的内存**。

- 如果选择开发计算机，MySQL数据库服务会占用所需最小的内存，以便其他应用可以正常运行。
- 服务器计算机是假设在这台计算机上有多个MySQL数据库服务器实例在运行，因此会占用中等程度的内存。
- 专属计算机则会占用计算机的全部内存资源。

这里我们选择配置成“开发计算机”，因为我们安装MySQL是为了学习它，因此，只需要MySQL占有运行所必需的最小资源就可以了。如果你要把它作为项目中的数据库服务器使用，就应该配置成服务器计算机或者专属计算机。

**再来说说MySQL数据库的连接方式配置**。我们也有3个选项：**网络通讯协议（TCP/IP）、命名管道（Named Pipe）和共享内存（Shared Memory）**。命名管道和共享内存的优势是速度很快，但是，它们都有一个局限，那就是只能从本机访问MySQL数据库服务器。所以，**这里我们选择默认的网络通讯协议方式，这样的话，MySQL数据库服务就可以通过网络进行访问了**。

MySQL默认的TCP/IP协议访问端口是3306，后面的X协议端口默认是33060，这里我们都不做修改。MySQL的X插件会用到X协议，主要是用来实现类似MongoDB 的文件存储服务。这方面的知识，我会在课程后面具体讲解，这里就不多说了。

高级配置（Show Advanced）和日志配置（Logging Options），在咱们的课程中用不到，这里不用勾选，系统会按照默认值进行配置。

**第三步：身份验证配置**

关于MySQL的身份验证的方式，我们选择系统推荐的基于SHA256的新加密算法caching_sha2_password。因为跟老版本的加密算法相比，新的加密算法具有相同的密码也不会生成相同的加密结果的特点，因此更加安全。

**第四步：设置密码和用户权限**

接着，我们要设置Root用户的密码。Root是MySQL的超级用户，拥有MySQL数据库访问的最高权限。这个密码很重要，我们之后会经常用到，你一定要牢记。

**第五步：配置Windows服务**

最后，我们要把MySQL服务器配置成Windows服务。Windows服务的好处在于，可以让MySQL数据库服务器一直在Windows环境中运行。而且，我们可以让MySQL数据库服务器随着Windows系统的启动而自动启动。

## 图形化管理工具Workbench

安装完成之后，我再给你介绍一下MySQL自带的图形化管理工具Workbench。同时，我还会用Workbench的数据导入功能，带你导入一个Excel数据文件，创建出我们的第一个数据库和数据表。

首先，我们点击Windows左下角的“开始”按钮，如果你是Win10系统，可以直接看到所有程序，如果你是Win7系统，需要找到“所有程序”按钮，点击它就可以看到所有程序了。

接着，找到“MySQL”，点开，找到“MySQL Workbench 8.0 CE”。点击打开Workbench，如下图所示：

<img src="https://static001.geekbang.org/resource/image/ed/c2/ed6288dec0a1899bcb1b6c367aaf53c2.png" alt="">

左下角有个本地连接，点击，录入Root的密码，登录本地MySQL数据库服务器，如下图所示：

<img src="https://static001.geekbang.org/resource/image/d4/66/d4fb370ed80689384ccfa93267996766.png" alt="">

这是一个图形化的界面，我来给你介绍下这个界面。

- 上方是菜单。左上方是**导航栏**，这里我们可以看到MySQL数据库服务器里面的数据库，包括数据表、视图、存储过程和函数；左下方是**信息栏**，可以显示上方选中的数据库、数据表等对象的信息。
- 中间上方是工作区，你可以在这里写SQL语句，点击上方菜单栏左边的第三个运行按钮，就可以执行工作区的SQL语句了。
- 中间下方是输出区，用来显示SQL语句的运行情况，包括什么时间开始运行的、运行的内容、运行的输出，以及所花费的时长等信息。

好了，下面我们就用Workbench实际创建一个数据库，并且导入一个Excel数据文件，来生成一个数据表。**数据表是存储数据的载体，有了数据表以后，我们就能对数据进行操作了**。

### 创建数据表

**第一步：录入Excel数据**

我们打开Excel，在工作簿里面录入数据。

我们这个工作表包括3列，分别是barcode、goodsname、price，代表商品条码、商品名称和售价。然后，我们再录入2条数据。

- 0001，book，3：表示条码为“0001”，商品名称是“book”，价格是3元。
- 0002，pen，2：表示条码是“0002”，商品名称是“pen”，价格是2元。

注意，我在录入商品条码的时候，打头用了一个单引号，这是为了告诉Excel，后面是文本，这样系统就不会把0001识别为数字了。

录入完成之后，我们把这个文件存起来，名称是test，格式采用“CSVUTF-8（逗号分隔）”。这样，我们就有了一个CSV文件test.csv。

**第二步：编码转换**

用记事本打开文件，再用UTF-8格式保存一次，这是为了让Workbench能够识别文件的编码。

**第三步：数据导入**

准备好数据文件以后，我们回到Workbench，在工作区录入命令：`create database demo;`，在工作区的上方，有一排按钮，找到闪电标识的运行按钮，点击运行。

这时，下方的输出区域的运行结果会提示“OK”，表示运行成功。此时，把光标放到左边的导航区，点击鼠标右键，刷新全部，新创建的数据库“demo”就出现了。

点击数据库demo左边的向右箭头，就可以看到数据库下面的数据表、视图、存储过程和函数。当然，现在都是空的。光标选中数据表，鼠标右键，选择“Table Data Import Wizard”，这时会弹出数据文件选择界面。选中刚才准备的test.csv文件，点击下一步，Workbench会提示导入目标数据表，我们现在什么表也没有，所以要选择创建新表“test”。点击下一步，Workbench会提示配置表的字段，其实它已经按照数据的类别帮我们配置好了。

这时候，再次点击下一步，点击运行，完成数据表导入。光标放到左边的导航区，选中我们刚刚创建的数据库“demo”中的数据表，鼠标右键，点击刷新全部，刚刚导入的数据表“test”就显示出来了。

### 进行查询

现在我们已经有了数据库，也有了数据表，下面让我们尝试一个简单的查询。

在工作区，录入`SELECT * FROM demo.test;`（这里的demo是数据库名称，test是数据表名称，*表示全部字段）。

用鼠标选中这行查询命令，点击运行。工作区的下半部分，会显示查询的结果。我们录入的2条数据，都可以看到了。

再尝试插入一条语句：

```
INSERT INTO demo.test 
VALUES ('0003','橡皮',5);

```

鼠标选中这条语句，点击运行。看到了吗？输出区提示“OK”，运行成功了。现在回过头来选中上面那条查询语句“SELECT * FROM demo.test;”，点击运行，刚才我们插入的那条记录也查询出来了。

<img src="https://static001.geekbang.org/resource/image/75/79/755b0dfc9f16a598f6270eb2fdb26079.png" alt="">

到这里，我们就完成了数据库创建、数据表导入和简单的查询。是不是觉得很简单呢？

最后，我还想再讲一下源码获取方法。咱们的课程不要求你阅读源码，但是你可以先学会获取源码的方法，毕竟，这是帮助你提升的重要工具。

## MySQL源代码获取

首先，你要进入MySQL[下载界面](https://dev.mysql.com/downloads/mysql/8.0.html)。 这里你不要选择用默认的“Microsoft Windows”，而是要通过下拉栏，找到“Source Code”，在下面的操作系统版本里面，选择Windows（Architecture Independent），然后点击下载。

接下来，把下载下来的压缩文件解压，我们就得到了MySQL的源代码。

MySQL是用C++开发而成的，我简单介绍一下源代码的组成。

mysql-8.0.22目录下的各个子目录，包含了MySQL各部分组件的源代码：

<img src="https://static001.geekbang.org/resource/image/e7/7d/e780e83b296aafd348b3a71948dd4a7d.png" alt="">

- sql子目录是MySQL核心代码；
- libmysql子目录是客户端程序API；
- mysql-test子目录是测试工具；
- mysys子目录是操作系统相关函数和辅助函数；
- ……

源代码可以用记事本打开查看，如果你有C++的开发环境，也可以在开发环境中打开查看。

<img src="https://static001.geekbang.org/resource/image/72/0b/72180866ddd34c512be6acea95822d0b.png" alt="">

如上图所示，源代码并不神秘，就是普通的C++代码，跟你熟悉的一样，而且有很多注释，可以帮助你理解。阅读源代码就像在跟MySQL的开发人员对话一样，十分有趣。

## 小结

好了，我们来小结下今天的内容。

这节课，我带你完成了MySQL的安装和配置，同时我还介绍了图形化管理工具Workbench的使用，并且创建了第一个数据库、数据表，也尝试了初步的SQL语句查询。

我建议你用自己的电脑，按照这节课的内容，实际操作一下MySQL的安装、配置，并尝试不同的配置，看看有什么不同，体会课程的内容，加深理解。

最后，还有几点我要着重提醒你一下。

1. 我们的MySQL是按照开发计算机进行的最小配置，实际做项目的时候，如果MySQL是核心数据库，你要给MySQL配置更多的资源，就要选择服务器计算机，甚至是专属计算机。
1. Root超级用户的密码，你不要忘了，否则只好卸载重新安装。
1. 你还可以在Workbench中，尝试一下不同的SQL语句，同时看看不同的工作区、菜单栏的各种按钮，看看它们都是做什么用的。熟悉Workbench，对理解我们后面的知识点，会很有帮助。

课程的最后，我还要给你推荐一下MySQL的[官方论坛](https://forums.mysql.com)。这里面有很多主题，比如新产品的发布、各种工具的使用、MySQL各部分组件的介绍，等等。如果你有不清楚的内容，也可以在里面提问，和大家交流，建议你好好利用起来。

## 思考题

在导入数据的时候，如果不采用MySQL默认的表名，而是把导入之后的表改个名字，比如说叫demo.sample，该如何操作呢？

欢迎在留言区写下你的思考和答案，我们一起交流讨论。如果你觉得今天的内容对你有所帮助，也欢迎你把它分享给你的朋友或同事，我们下节课见。
