Docker MySQL 快速启动和使用教程

本文旨在提供最小可用的启动文档,用于测试验证 MySQL 功能。通过本文你可以了解怎么通过 Docker 快速启动一个 MySQL 容器,并进行 MySQL 的配置和备份功能。

官方文档参考 https://hub.docker.com/_/mysql/
所有代码提交 Github:https://github.com/aaron0769/docker-mysql

运行 MySQL

在本地编排容器最简单的方法就是用 docker-compose,一个配置文件就能把整个容器环境拉起来,配置可以固定下来,不需要每次记忆 docker run 下的配置参数。

编写 docker-compose.yml 文件,内容如下:

version: '3.1'

services:

  db:
    image: mysql
    ports:
        - "3306:3306"
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpasswd
      MYSQL_DATABASE: mydb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypasswd

    networks:
        localnet:
            aliases:
                - mysql-default

networks:
    localnet:

其中 MySQL_XXX 创建了 root 密码和普通用户。localnet 让容器关联到本地网络,可以通过本地 127.0.0.1 或者 localhost 进行访问。

启动 MySQL

shell> docker-compose up -d

停止 MySQL

shell> docker-compose stop  # 如果要彻底删除相关资源使用命令down

连接 MySQL

一般有三种方式:

  1. 本地 MySQL 客户端
  2. 直接进入容器
  3. 通过容器启动一个 MySQL 客户端

方法3由于需要启动另一个容器,不是最简单的操作,但好处是有隔离的环境。这里就不详细说明了,有这个需要的读者可以参考 Docker MySQL 官方文档)。

本地 MySQL 客户端

一般来说本地还是建议安装个 MySQL 客户端,安装包可以参考 MySQL 官方文档或者利用各种系统的包管理工具,比如 MacOS下可以通过以下命令安装(这里会把整个 MySQL Server 都一起安装了)

brew install mysql

其他系统就不展开了。安装好后,直接通过 shell 执行以下命令即可进入 MySQL。

shell>mysql -uroot -prootpasswd -h 127.0.0.1

通过容器直接进入 MySQL

这个方法的原理是 MySQL 容器本身集成了客户端,所以可以通过进入容器的方式连接 MySQL。

首先通过docker ps命令找到容器的名称,这里是mysql_db_1

docker exec -it mysql_db_1 mysql -uroot -prootpasswd

配置 MySQL

配置文件

通过挂载本地目录到容器中的/etc/mysql/conf.d/进行配置文件导入,假设以下配置

.
├── config
│   └── my_custom.cnf
└── docker-compose.yml

配置一个最简单的修改,比如调整端口为3307

# config/my_custom.cnf
[mysqld]
port        = 3307

修改 docker-compose.yml 文件,在 db 项下面添加配置

    db:
    
    # 原配置保留,这里省略......
    
        ports:  
        - "3307:3307"
        volumes:
        - ./config:/etc/mysql/conf.d

配置参数

docker 的 mysql 镜像入口提供很多常用的 mysql 配置,可以在运行容器时配置参数,比如本文中的几个配置数据库用户和 root 用户的密码。更多配置也可以参考官网

备份、恢复数据

MySQL Dump

可以像操作普通数据库一样进行mysqldump进行备份,并通过 mysql 导入数据。

物理备份

将 MySQL 的文件目录映射到本地指定的目录,通过整个目录进行备份,在 volumes 配置中新增一个磁盘映射

...
    volumes:
        - ./config:/etc/mysql/conf.d
        - ./datadir:/var/lib/mysql

在目录中新建datadir目录。

通过docker-compose down && docker-compose up重启容器,
即可观察到datadir目录中的文件,已经包含了相应的文件。

# ls datadir
ib_logfile0  ibdata1  mysql      undo_001
ib_logfile1  ibtmp1   mysql.ibd  undo_002

简单测试一下,进入 MySQL 后,创建一个新表

CREATE TABLE mytable( id INT );

这时关掉重启容器,只要datadir的内容没有变,重新进入之后,发现这个表依然在。即可以通过将datadir目录达到备份和恢复的目的。现在很多文件系统提供快照功能,利用磁盘快照,实现快速的备份功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容