技术译文 | 使用 Docker 安装 MySQL[通俗易懂]

技术译文 | 使用 Docker 安装 MySQL[通俗易懂]作者:Peter Zaitsev 翻译:管长龙 原文:https://www.percona.com/blog/2019/11/19/installing-mysql-with-docker/ 在工…

作者:Peter Zaitsev 翻译:管长龙 原文:https://www.percona.com/blog/2019/11/19/installing-mysql-with-docker/

在工作中,我经常需要安装特定版本的 MySQL、MariaDB 或 Percona 来运行一些实验,例如:检查版本差异或是提供测试说明。此博客系列将阐述如何使用 Docker 安装 MySQL、MariaDB 或 Percona。这篇文章是第一篇,重点是 MySQL。

Docker 的优点在于它可以非常轻松地安装最新的 MySQL 版本以及任何其他版本,但往往与典型的生产安装不匹配。当您需要简单的单个实例时,Docker 的确很方便。如果您正在研究一些与复制相关的行为,那么则不一定适合。

这些说明皆在快速、轻松地运行测试实例的情况下。不适用于生产部署。以下内容所假定已安装 Docker。

首先,您应该知道只有两个“官方” MySQL Docker 存储库。其中之一由 Docker 团队维护,可通过一个简单的 docker 命令 mysql:latest 运行起来。另一个由 Oracle 的 MySQL 团队维护,语法:

docker run mysql / mysql-server:latest

代码100分

说明:语法中的 latest 是 tag 值,表示默认安装库中的最新版本

在以下示例中,我们将使用 MySQL 团队的 Docker 映像,尽管 Docker 团队的工作方式与此类似。

使用 Docker 安装最新版本的 MySQL

代码100分docker run --name mysql-latest  
-p 3306:3306 -p 33060:33060  
-e MYSQL_ROOT_HOST="%" -e MYSQL_ROOT_PASSWORD="strongpassword"   
-d mysql/mysql-server:latest

这将启动最新版本的 MySQL 实例,可以使用指定的 root 密码从任何地方远程访问该实例。这很容易测试,但不是好的安全习惯(这就是为什么它不是默认值)的原因。

连接到 MySQL Server Docker 容器

使用 Docker 安装意味着您无法直接在主机上获得任何工具,实用程序或库,因此您可以单独安装它们,从远程主机访问创建的实例,或使用 Docker 映像附带的命令行。

通过 Docker 启动 MySQL 命令行客户端:

docker exec -it mysql-latest mysql -uroot -pstrongpassword

使用 Docker 启动 MySQL Shell:

代码100分docker exec -it mysql-latest mysqlsh -uroot -pstrongpassword

在 Docker 容器中管理 MySQL 服务器

当您要停止 MySQL Server Docker 容器运行时:

docker stop mysql-latest

如果要重新启动已停止的 MySQL Docker 容器,则不应尝试使用 docker run 重新启动它。相反,您应该使用:

docker start mysql-latest

如果出现错误,例如,如果容器未启动,则可以使用以下命令访问其日志:

docker logs mysql-latest

如果要从头开始重新创建一个新的 Docker 容器,可以运行:

docker stop mysql-latest
docker rm mysql-latest

之后再次执行 docker run 命令。

将命令行选项传给 Docker 容器中的 MySQL Server

如果要将某些命令行选项传给 MySQL Server,可以采用以下方式:

docker run --name mysql-latest  
-p 3306:3306 -p 33060:33060  
-e MYSQL_ROOT_HOST="%" -e MYSQL_ROOT_PASSWORD="strongpassword"   
-d mysql/mysql-server:latest 
--innodb_buffer_pool_size=256M 
--innodb_flush_method=O_DIRECT 

在 Docker 中运行指定版本的 MySQL 服务器

如果想在 Docker 容器中运行某版本的 MySQL,这很简单。您可以使用 Docker Image Tag 选择想要的版本,并将 Name 更改为其他名称,以避免名称冲突:

docker run --name mysql-8.0.17  
-p 3306:3306 -p 33060:33060  
-e MYSQL_ROOT_HOST="%" -e MYSQL_ROOT_PASSWORD="strongpassword"   
-d mysql/mysql-server:8.0.17

这将在 Docker 容器中启动 MySQL 8.0.17。

docker run --name mysql-5.7  
-p 3306:3306 -p 33060:33060  
-e MYSQL_ROOT_HOST="%" -e MYSQL_ROOT_PASSWORD="strongpassword"   
-d mysql/mysql-server:5.7

这将在 Docker 中启动最新的 MySQL 5.7。

在 Docker 中同时运行多版本的 MySQL 服务器

同时在 Docker 中运行多版本的 MySQL ,潜在问题是 TCP 端口冲突。如果您不从外部访问 Docker 容器,而只运行同一容器中包含的程序,则可以删除端口映射(-p option),然后可以运行多个容器:

docker run --name mysql-latest  
-e MYSQL_ROOT_HOST="%" -e MYSQL_ROOT_PASSWORD="strongpassword"   
-d mysql/mysql-server:latest
 
docker run --name mysql-8.0.17  
-e MYSQL_ROOT_HOST="%" -e MYSQL_ROOT_PASSWORD="strongpassword"   
-d mysql/mysql-server:8.0.17

在更常见的情况下,当您需要从外部访问 Docker 容器时,您将需要将其映射为使用不同的外部端口名称。 例如,要在端口 3306/33060 和 MySQL 8.0.17 在 3307/33070 处启动最新的 MySQL 8,我们可以使用:

docker run --name mysql-latest  
-p 3306:3306 -p 33060:33060  
-e MYSQL_ROOT_HOST="%" -e MYSQL_ROOT_PASSWORD="strongpassword"   
-d mysql/mysql-server:latest
  
docker run --name mysql-8.0.17  
-p 3307:3306 -p 33070:33060  
-e MYSQL_ROOT_HOST="%" -e MYSQL_ROOT_PASSWORD="strongpassword"   
-d mysql/mysql-server:8.0.17

如果要在 Docker 上使用 MySQL 进行更复杂的事请,那还有很多事情要考虑。

有关更多信息,请查阅: https://hub.docker.com/r/mysql/mysql-server/ https://dev.mysql.com/doc/refman/8.0/en/linux-installation-docker.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10845.html

(0)
上一篇 2022-12-20 21:00
下一篇 2022-12-20

相关推荐

  • Python 中,单引号与双引号有什么区别?

    Python 中,单引号与双引号有什么区别?Python 中单引号和双引号是两种表示字符串的方式。在日常的 Python 编程中,单引号和双引号的使用不同,有的时候甚至会影响程序的运行结果。

    2024-04-20
    19
  • 详解数仓的锁相关参数及视图[通俗易懂]

    详解数仓的锁相关参数及视图[通俗易懂]摘要:GaussDB(DWS) 中锁等待可以设置等待超时相关参数,一旦等锁的时间超过参数配置值会抛错。 本文分享自华为云社区《GaussDB(DWS) 锁相关参数及视图详解》,作者: yd_22052

    2023-06-09
    86
  • 如何做到 10T 集群数据安全备份、1GB/s 快速恢复?

    如何做到 10T 集群数据安全备份、1GB/s 快速恢复?作者:沈泰宁 数据库作为基础设施,其安全性不言而明,因此数据安全备份和恢复功能是在严肃使用场景下的标配。TiDB 作为一款分布式数据库,目前可以满足超大集群的备份恢复的需求,经过测试,10T 数据的…

    2023-02-01
    95
  • 提高Python程序的效率:使用多线程

    提高Python程序的效率:使用多线程Python是一种高级语言,因其清晰的语法和强大的功能而深受开发者的喜爱。但是,它相对其他语言的程序性能往往较差,这使得在处理大型或者密集计算任务时,Python往往需要更长的时间。为了提高程序的效率,我们可以使用多线程。多线程可以在多个线程之间分配处理任务,从而使得任务能够更快地完成。

    2023-12-29
    70
  • 腾讯金融云产品_简述金融大数据的关键技术

    腾讯金融云产品_简述金融大数据的关键技术近期,由中科软科技股份有限公司主办,以“数字保险 科技引擎”为主题的“中国财险科技应用高峰论坛”在北京古北水镇成功举办。论坛聚集400多位来自国内财险公司、国内外保险科技公司的技术专家,腾讯云数据库总

    2023-06-03
    102
  • TICK技术栈(四)Grafana安装及使用「建议收藏」

    TICK技术栈(四)Grafana安装及使用「建议收藏」1.什么是Grafana? Grafana是一款采用go语言和Angular框架编写的开源的可视化工具,主要用于大规模指标数据的可视化展示,提供包括折线图,饼图,仪表盘等多种监控数据可视化UI,是网络

    2022-12-18
    94
  • Pgpool-II常用命令[通俗易懂]

    Pgpool-II常用命令[通俗易懂]启动pgpool:如果加-D,表示忽略上一次每个节点的状态 pgpool -n -d -D 从虚拟IP连接数据库: psql -h 192.168.119.200 -p 9999 查看postgre…

    2022-12-15
    99
  • Python List 插入元素的方法

    Python List 插入元素的方法执行以上代码可以得到输出结果:[1, ‘apple’, 2, 3]。在这个例子中,我们向一个包含三个元素的列表中插入一个字符串,并指定它的索引为1。注意,这里是将字符串插入到索引1的位置,原来处于该位置的元素以及后面的元素都会自动向后移动一个位置。

    2024-02-20
    49

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注