Docker - 部署 MySQL 5.7 数据库容器
文章目录
- 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 数据库容器相关推荐
- docker部署mysql初始化数据库
一.前言 在使用docker部署mysql服务时,往往需要在创建容器时新建database,在需要在创建实例的过程中希望初始化sql脚本. mysql官方镜像支持在容器初次启动时自动执行指定的sql脚 ...
- 史上最详细Docker部署Mysql主从复制,带每一步骤图!!!
没有夸大标题哈,能够成功的,实测后发文 本文主要讲怎么用Docker部署Mysql的主从复制,看起来很长,实际非常简单的,看一遍,立马就能懂的. 直接CV也能搭建起来,莫慌. 我们一起加油!!! 地点 ...
- docker 打包mysql_基于docker部署mysql的数据持久化问题
本人最近在使用docker部署mysql时,在持久化mysql数据时遇到了一个有趣的问题,将排查过程及思考记录在这里,以备后查. 先简单描述下我遇到的问题:在mysql容器中创建了两个数据库,然后使用 ...
- mysql 部署到服务器_服务器快速部署--使用Docker部署MySQL
最近使用Dokcer部署各种服务端所需的环境,目的是为了后面的服务器集群.负载均衡.数据库集群做铺垫,以便准备好服务器高并发.数据库高并发提供测试环境.这里记录一下Docker部署MySQL的过程,为 ...
- prometheus实现对docker部署mysql监控
prometheus实现对docker部署mysql监控 1.安装mysql docker pull mysql:5.6 建立挂载的数据卷 mkdir -p /opt/mysql/data 虚拟机33 ...
- docker部署mysql并挂载数据卷
docker部署mysql并挂载数据卷 备份mysql源文件 windows下备份数据库 # 方法一:进入到mysql安装路径下的bin文件,执行备份命令 # pg_dump -h localhost ...
- docker 安装 mysql 并映射数据库存放路径及配置文件
[Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...
- Linux中Docker部署MySQL
应用背景:在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server Docker中部署MySQL服务时有下述几个关键点: 1.容器内的网络服务和外部机器不能直接通信 ...
- Docker配置mysql以及宿主机容器目录挂载
Docker配置mysql以及宿主机容器目录挂载 在之前的docker 挂载中主要说明了创建数据卷并挂载的方式.现在我们做一种创建普通目录并进行挂载的方式. 基于mysql镜像的拉取并进行配置. 首先 ...
最新文章
- java ajax jquery分页插件_JQueryPagination分页插件,ajax从struts请求数据
- php算出明天的日期,PHP获取昨天、今天及明天日期的方法
- 零代码入门GitHub,图形化交互让你轻松存代码 | 附Git GUI推荐
- 【好文推荐】springmvc教程下载
- 67.Java垃圾收集机制\对象引用\垃圾对象的判定\垃圾收集算法\标记—清除算法\标记—整理算法\分代收集\垃圾收集器\性能调优
- 教育启蒙赛道、亿级异构数据不停服平滑迁移方案和实践
- mpvue中使用vant-weapp
- Delphi多媒体设计之播放WAVE文件(API)
- murmurhash java_浅析ketamahash和murmurhash
- RocketMQ 常见异常处理
- 快速H.264编码算法的研究及实现
- Charles使用笔记
- 第八课 实战重启验证注册机制
- matlab 颜色对照表
- 技术总监和CTO的区别 浅谈CTO的作用----软件公司如何开源节流
- ai跟随路径_ai中图像怎么沿着路径走
- 央视国际节目定价发布接口规范C2
- 从faker.js 开源作者Marak已删除了GIthub所有代码我们得到了什么教训
- 玩客云添加到我的计算机,玩客云怎么备份?将电脑文件备份到玩客云教程
- 使用NanoHttpd在Android上实现HttpServer