Docker安装并配置MySQL5.7

一. 版本

  • CentOS:7.6
  • Docker:19.03
  • MySQL:5.7

二. 下载并安装

  1. 拉取MySQL镜像:
    docker pull mysql:5.7
  2. 创建MySQL在宿主机对应的目录映射:
    mkdir -p /usr/local/mysql/{logs,data}
  3. 安装MySQL:
    # 切换到宿主机的mysql目录
    cd /usr/local/mysql
    # 创建mysql容器
    docker run -p 3306:3306 --name my_mysql \
    -v $PWD/logs:/var/log/mysql \
    -v $PWD/data:/var/lib/mysql \
    --restart=always --privileged=true \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:5.7
    # 命令解释
    # docker run :是docker创建容器命令
    # -p 宿主机端口:容器端口 :端口映射
    # --name 容器名 :自定义容器名
    # -v 宿主机目录:容器目录 :目录映射
    # 在这里目录映射了mysql容器中的日志、数据库文件
    # --restart=always :docker启动时自启动该容器
    # --privileged=true :获取容器真实root权限
    # -e MYSQL_ROOT_PASSWORD :设置mysql root账户初始密码
    # -d 镜像:版本 :选择要创建容器的镜像,并在后台运行
    
  4. 注意:
    1. 查看生成的mysql容器的时候,端口映射会出现一个33060的端口,这是MySQL的MySQL Shell操作所需要的协议端口,属于必备端口。
      详见:mysql接口定义
    2. 不要映射 /etc/mysql 配置文件目录,会把镜像默认的配置文件夹替换为空文件夹。

三. 配置MySQL容器

  1. 进入mysql容器:
    docker exec -it my_mysql /bin/bash
  2. 编辑配置文件以前需要更新关联并下载文本编辑器:
    # 设置容器时间为当前时间,有的容器可能不准导致容器更新关联失败
    date -s "当前时间"
    # 示例:date -s "20200926 21:07:00" #yyyymmdd hh:mm:ss
    # 更新关联,因为默认服务器不在国内,所以速度慢的惊人
    apt-get update
    # 安装文本编辑器nano
    apt-get install nano
    
  3. 编辑
    # 安装好nano后,跳转到mysql容器自动生成的配置文件目录下
    cd /etc/mysql
    # 打开配置文件my.cnf
    nano my.cnf
    
    在文件末尾添加以下字段,此时我默认编码格式为utf8,如果用GBK自己改即可
    [mysql]
    default-character-set=utf8mb4
    [mysqld]
    character_set_server=utf8mb4
    init_connect='SET NAMES utf8'
    lower_case_table_names = 1
    
    保存配置文件,并使用exit命令退出mysql容器
  4. 重启mysql容器:
    docker restart my_mysql
  5. 查看配置文件是否生效
    # 重新进入mysql容器中
    docker exec -it my_mysql /bin/bash
    # 登陆mysql客户端
    mysql -uroot -p123456
    # 依次执行命令
    show variables like 'character_set%';
    show variables like 'collation%';
    
posted @ 2020-09-27 00:33  苍凉温暖  阅读(3011)  评论(0编辑  收藏  举报