文章目录

  • Docker - 部署 MySQL 5.7 数据库容器
    • 环境信息
    • 部署 MySQL 5.7 数据库容器
    • 修改 MySQL 的字符集
    • 参考信息

Docker - 部署 MySQL 5.7 数据库容器

环境信息

操作系统:

$ cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)
$ uname --kernel-release
3.10.0-1062.el7.x86_64

Docker 版本:

$ docker version
Client: Docker Engine - CommunityVersion:           19.03.11API version:       1.40Go version:        go1.13.10Git commit:        42e35e61f3Built:             Mon Jun  1 09:13:48 2020OS/Arch:           linux/amd64Experimental:      falseServer: Docker Engine - CommunityEngine:Version:          19.03.11API version:      1.40 (minimum version 1.12)Go version:       go1.13.10Git commit:       42e35e61f3Built:            Mon Jun  1 09:12:26 2020OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.2.13GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429runc:Version:          1.0.0-rc10GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dddocker-init:Version:          0.18.0GitCommit:        fec3683

部署 MySQL 5.7 数据库容器

1、访问 Docker Hub,搜索 mysql,过滤出 5.7 的版本。

2、拉取 MySQL 5.7.30 镜像。

$ docker pull mysql:5.7.30
5.7.30: Pulling from library/mysql
afb6ec6fdc1c: Pull complete
0bdc5971ba40: Pull complete
97ae94a2c729: Pull complete
f777521d340e: Pull complete
1393ff7fc871: Pull complete
a499b89994d9: Pull complete
7ebe8eefbafe: Pull complete
4eec965ae405: Pull complete
a531a782d709: Pull complete
270aeddb45e3: Pull complete
b25569b61008: Pull complete
Digest: sha256:d16d9ef7a4ecb29efcd1ba46d5a82bda3c28bd18c0f1e3b86ba54816211e1ac4
Status: Downloaded newer image for mysql:5.7.30
docker.io/library/mysql:5.7.30

3、查看拉取的镜像。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               5.7.30              a4fdfd462add        12 days ago         448MB

4、运行镜像,并设置 MySQL root 用户的密码。

$ docker run --interactive --detach --name mysql --publish 3306:3306 --env MYSQL_ROOT_PASSWORD=123456 mysql:5.7.30

--publish 3306:3306 宿主机的 3306 端口映射到容器的 3306 端口。

--env MYSQL_ROOT_PASSWORD=123456 设置 MySQL root 用户的密码。

5、列出正在运行的容器。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
21fb901d85e6        mysql:5.7.30        "docker-entrypoint.s…"   10 seconds ago      Up 9 seconds        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

修改 MySQL 的字符集

1、进入容器。

$ docker exec --interactive --tty mysql /bin/bash

2、在容器中使用 MySQL 客户端连接服务端。

root@21fb901d85e6:/# mysql --user root --password
Enter password: 123456
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.30 MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

3、连接到 MySQL 服务端之后,通过 status 命令获取服务端的状态信息。

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using  EditLine wrapperConnection id:       3
Current database:
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.30 MySQL Community Server (GPL)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:         11 min 23 secThreads: 2  Questions: 9  Slow queries: 0  Opens: 105  Flush tables: 1  Open tables: 98  Queries per second avg: 0.013
--------------

从第 15 ~ 18 行可以看出,当前服务端、数据库和客户端等的字符集都是 latin1,接下来我们需要修改这些字符集。

4、因为 MySQL 容器中没有 vi 编辑器,所以我们需要先回到宿主机。接着将 MySQL 容器中 MySQL 配置文件复制到宿主机的根目录下。

docker cp mysql:/etc/mysql/mysql.cnf /

注意:复制之前请确保没有同名的文件。

5、修改 mysql.cnf 文件,添加以下内容。

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci[client]
default-character-set=utf8mb4

6、修改完成之后,将该文件复制到 MySQL 容器的 /etc/mysql/ 目录下。

$ docker cp /mysql.cnf mysql:/etc/mysql/

7、重启 MySQL 容器。

$ docker restart mysql

8、进入容器。

$ docker exec --interactive --tty mysql /bin/bash

9、重新连接 MySQL 服务端。

root@21fb901d85e6:/# mysql --user root --password
Enter password: 123456
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30 MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

10、执行 status 命令,可以看到服务端、数据库和客户端等的字符集都是 utf8mb4

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using  EditLine wrapperConnection id:       2
Current database:
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.30 MySQL Community Server (GPL)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:         1 min 44 secThreads: 1  Questions: 5  Slow queries: 0  Opens: 105  Flush tables: 1  Open tables: 98  Queries per second avg: 0.048
--------------

参考信息

MySQL - Server System Variables

MySQL - Character Sets and Collations in MySQL

Docker - 部署 MySQL 5.7 数据库容器相关推荐

  1. docker部署mysql初始化数据库

    一.前言 在使用docker部署mysql服务时,往往需要在创建容器时新建database,在需要在创建实例的过程中希望初始化sql脚本. mysql官方镜像支持在容器初次启动时自动执行指定的sql脚 ...

  2. 史上最详细Docker部署Mysql主从复制,带每一步骤图!!!

    没有夸大标题哈,能够成功的,实测后发文 本文主要讲怎么用Docker部署Mysql的主从复制,看起来很长,实际非常简单的,看一遍,立马就能懂的. 直接CV也能搭建起来,莫慌. 我们一起加油!!! 地点 ...

  3. docker 打包mysql_基于docker部署mysql的数据持久化问题

    本人最近在使用docker部署mysql时,在持久化mysql数据时遇到了一个有趣的问题,将排查过程及思考记录在这里,以备后查. 先简单描述下我遇到的问题:在mysql容器中创建了两个数据库,然后使用 ...

  4. mysql 部署到服务器_服务器快速部署--使用Docker部署MySQL

    最近使用Dokcer部署各种服务端所需的环境,目的是为了后面的服务器集群.负载均衡.数据库集群做铺垫,以便准备好服务器高并发.数据库高并发提供测试环境.这里记录一下Docker部署MySQL的过程,为 ...

  5. prometheus实现对docker部署mysql监控

    prometheus实现对docker部署mysql监控 1.安装mysql docker pull mysql:5.6 建立挂载的数据卷 mkdir -p /opt/mysql/data 虚拟机33 ...

  6. docker部署mysql并挂载数据卷

    docker部署mysql并挂载数据卷 备份mysql源文件 windows下备份数据库 # 方法一:进入到mysql安装路径下的bin文件,执行备份命令 # pg_dump -h localhost ...

  7. docker 安装 mysql 并映射数据库存放路径及配置文件

    [Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...

  8. Linux中Docker部署MySQL

    应用背景:在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server Docker中部署MySQL服务时有下述几个关键点: 1.容器内的网络服务和外部机器不能直接通信 ...

  9. Docker配置mysql以及宿主机容器目录挂载

    Docker配置mysql以及宿主机容器目录挂载 在之前的docker 挂载中主要说明了创建数据卷并挂载的方式.现在我们做一种创建普通目录并进行挂载的方式. 基于mysql镜像的拉取并进行配置. 首先 ...

最新文章

  1. java ajax jquery分页插件_JQueryPagination分页插件,ajax从struts请求数据
  2. php算出明天的日期,PHP获取昨天、今天及明天日期的方法
  3. 零代码入门GitHub,图形化交互让你轻松存代码 | 附Git GUI推荐
  4. 【好文推荐】springmvc教程下载
  5. 67.Java垃圾收集机制\对象引用\垃圾对象的判定\垃圾收集算法\标记—清除算法\标记—整理算法\分代收集\垃圾收集器\性能调优
  6. 教育启蒙赛道、亿级异构数据不停服平滑迁移方案和实践
  7. mpvue中使用vant-weapp
  8. Delphi多媒体设计之播放WAVE文件(API)
  9. murmurhash java_浅析ketamahash和murmurhash
  10. RocketMQ 常见异常处理
  11. 快速H.264编码算法的研究及实现
  12. Charles使用笔记
  13. 第八课 实战重启验证注册机制
  14. matlab 颜色对照表
  15. 技术总监和CTO的区别 浅谈CTO的作用----软件公司如何开源节流
  16. ai跟随路径_ai中图像怎么沿着路径走
  17. 央视国际节目定价发布接口规范C2
  18. 从faker.js 开源作者Marak已删除了GIthub所有代码我们得到了什么教训
  19. 玩客云添加到我的计算机,玩客云怎么备份?将电脑文件备份到玩客云教程
  20. 使用NanoHttpd在Android上实现HttpServer

热门文章

  1. html中基线对齐,css基线与行高
  2. 深度图结合RGB实现行为识别
  3. java xml 实体类_java中的xml与实体类之间的映射
  4. Python list extend方法
  5. CSDN 博客 排名
  6. 2021重庆市实验中学高考成绩查询,重庆市实验中学2021年排名
  7. 2022年熔化焊接与热切割考试题及在线模拟考试
  8. ZigBee到底是什么概念?和通常的Wi-Fi有何区别?
  9. VisionOS文档翻译与实践4-在你的应用中创建完全沉浸式
  10. java语言与c 相比 有哪些优点_Java编程和C语言分别有哪些优势