Docker 安装 MySQL 8.0

犬小哈 2024-04-24 约 1,156 字 大约 4 分钟 共 6 张图 987

友情提示

推荐您使用 Chrome 浏览器来阅读本实战专栏,其他浏览器可能存在兼容性问题。

本小节中,我们将通过 Docker 来快速搭建一个 MySQL 8.0 版本的数据库环境。

TIP : 本文假设你本地已经搭建好了 Docker 环境,不清楚如何搭建的童鞋,可以翻阅上个项目《前后端分离博客》 的下面小节, 中间有讲解如何搭建 Docker 环境:

《本地开发环境搭建 、开发工具安装》

1. 为什么要从 MySQL 5.7 升级到 8.0 版本?

上个项目 中,我们使用的是 5.7 版本的 MySQL, 这次,我们将使用 MySQL 8.0 版本。

MySQL 8.0 相对于 5.7 版本带来了许多新特性和改进,这些改进涵盖了性能、安全性、可用性、功能性等方面。以下是 MySQL 8.0 相对于 5.7 的一些优势:

  • JSON 支持的改进: MySQL 8.0 提供了更加完善的 JSON 支持,包括 JSON 数据类型的完全支持、JSON 函数和操作的增强、JSON 路径表达式的支持等,使得在 MySQL 中处理 JSON 数据更加方便和高效。

  • 窗口函数: MySQL 8.0 引入了窗口函数的支持,使得在 SQL 查询中可以更灵活地进行聚合和分析操作,例如在窗口内计算排名、累积和等。

  • CTE(Common Table Expressions): MySQL 8.0 支持公共表表达式(CTE),允许在查询中定义临时结果集,并在后续查询中引用,提高了查询的可读性和可维护性。

  • 更强大的安全性功能: MySQL 8.0 引入了更多的安全性功能,包括密码策略、密码过期、密码历史记录、角色管理等,加强了对数据库的访问控制和身份验证。

  • 新的数据字典: MySQL 8.0 引入了新的数据字典架构,将系统表重新组织为 InnoDB 存储引擎的表,提高了性能和可扩展性,并且降低了元数据操作的锁定竞争。

  • 更好的性能和优化: MySQL 8.0 对查询优化器进行了改进,包括新的查询规划器、索引算法的改进、多版本并发控制等,提高了查询性能和并发处理能力。

  • GIS 功能增强: MySQL 8.0 增强了对地理信息系统(GIS)功能的支持,包括新的地理数据类型、空间索引的改进、地理空间分析函数的增强等。

  • 事务管理的改进: MySQL 8.0 引入了原子数据定义语句(DDL)的事务性,允许将 DDL 操作作为一个事务提交或回滚,提高了数据库的可靠性和一致性。

  • 支持更多的 SQL 标准: MySQL 8.0 增加了对SQL标准的支持,包括窗口函数、CTE、空间数据类型等,使得 MySQL 更加符合 SQL 标准,提高了跨平台的兼容性。

2. 下载 MySQL 8.0 镜像

打开 PowerShell 命令行,执行如下命令:

docker pull mysql:8.0

拉取 MySQL 镜像完成后,执行如下命令,即可在本地镜像列表中看到下载好的 8.0 版本镜像了:

docker images

3. 启动 MySQL 容器

有了镜像后,通过该镜像,来启动一个 MySQL 容器,执行如下命令:

docker run -d --name mysql8.0 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

解释一下参数的含义:

  • -d:以后台的方式运行;

  • --name mysql:指定容器的名称为 mysql8.0;

  • -p 3306:3306 : 将容器中的 3306 端口挂载到宿主机的 3306 端口上(前面是宿主机的端口号,后面是容器的端口号);

  • -e MYSQL_ROOT_PASSWORD=123456:指定 root 用户的密码为 123456;

    注意 : 这里演示使用的密码较为简单,你也可以整一个安全性较高的密码。

4. 查看容器是否启动成功

容器启动后,可通过执行如下命令来查看正在运行中的 Docker 容器:

docker ps

可以看到列表中有个 MySQL 8.0 的容器正在运行了。

5. 通过工具连接数据库

这里小哈使用的 Navicat, 输入主机、端口、用户名、密码后,点击测试连接按钮,如果如下图所示, 看到提示连接成功

则表示本地的 MySQL 8.0 数据库环境,搭建成功啦~

最后编辑于 2024-05-07 14:22:02