• Docker(三):Docker安装MySQL


    查找MySQL镜像

    镜像仓库

    https://hub.docker.com/
    

    下拉镜像

    docker pull mysql:5.7
    

    查看镜像

    docker images
    

    创建MySQL容器

    命令式启动MySQL容器

    docker run -p 3306:3306 --name mysql 
     -v /mydata/mysql/log:/var/log/mysql 
     -v /mydata/mysql/data:/var/lib/mysql 
     -v /mydata/mysql/conf:/etc/mysql 
     -e MYSQL_ROOT_PASSWORD=root 
     -d mysql:5.7
    

    参数说明

    -p 3306:3306: 将容器的3306端口映射到宿主机的3306端口
    --name mysql:将容器名字设置为mysql
    -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到宿主机
    -v /mydata/mysql/data:/var/lib/mysql:将数据文件夹挂载到宿主机
    -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到宿主机
    -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
    -d mysql:5.7:后台运行容器,并返回容器ID
    

    docker-compose启动

    version: '2'
    services:
      mysql:
        container_name: mysql
        image: mysql:5.7
        ports:
          - "3306:3306"
        volumes:
          - /mydata/mysql/log:/var/log/mysql
          - /mydata/mysql/data:/var/lib/mysql
          - /mydata/mysql/conf:/etc/mysql
        restart: always
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - COMPOSE_PROJECT_NAME=mysql-server
    

    使用docker-compose方式启动可以很方便的查看容器的启动参数,命令启动方式可能会忘记启动参数。

    查看容器

    docker ps -a
    

    进入容器

    docker exec -it mysql /bin/bash
    

    容器中文件

    root@3873b46ee9b0:/# ls
    bin  boot  dev  docker-entrypoint-initdb.d  entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    # 退出容器
    root@3873b46ee9b0:/# exit;
    

    就是一个linux系统。

    配置MySQL

    进入挂载数据卷

    [root@k8s-master01 ~]# cd /mydata/mysql/
    [root@k8s-master01 mysql]# ls
    conf  data  log
    [root@k8s-master01 mysql]# cd conf/
    [root@k8s-master01 conf]# pwd
    /mydata/mysql/conf
    

    创建MySQL配置文件

    cat > my.cnf <<-EOF
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    EOF
    

    注意:解决mysql连接慢问题,skip-name-resolve:跳过域名解析

    重启MySQL容器

    docker restart mysql
    

    进入容器确认配置

    [root@k8s-master01 conf]# docker exec -it mysql /bin/bash
    root@3873b46ee9b0:/# cd /etc/mysql/
    root@3873b46ee9b0:/etc/mysql# ls
    my.cnf
    root@3873b46ee9b0:/etc/mysql# cat my.cnf 
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    

    测试连接

    test-conn

    Docker启动容器自启

    docker update mysql --restart=always
    
  • 相关阅读:
    【BZOJ3926】诸神眷顾的幻想乡 【广义后缀自动机】
    【BZOJ2780】Sevenk Love Oimaster【广义后缀自动机】
    【BZOJ3227】串【广义后缀自动机】
    【CodeForces
    【BZOJ3238】差异【后缀自动机+dp】
    【BZOJ4566】找相同字符【后缀自动机】
    【BZOJ3998】弦论 【后缀自动机】
    【poj1743】Musical Theme 【后缀自动机】
    【SPOJ
    【SPOJ
  • 原文地址:https://www.cnblogs.com/chinda/p/13068044.html
Copyright © 2020-2023  润新知