6、docker 安装mysql8

发布时间:2023年12月27日

Docker 安装 MySQL8

  1. 下载mysql8的镜像

    docker pull mysql:8.0.32
    
  2. 启动镜像

    docker run -p 3307:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.32
    
  3. 配置挂载

    1. 创建挂载目录

      mkdir -p /docker/mysql8.0.32/
      
    2. copy配置文件到创建的目录下

      docker cp  mysql:/etc/mysql /docker/mysql8.0.32/
      
  4. 删除原有容器

    docker stop mysql8
    docker rm -f mysql8
    
  5. 启动mysql挂载配置文件,数据持久化到宿主机

    1. 新增my.cnf

      cd /docker/mysql8.0.32/mysql/conf.d
      vim my.cnf
      

      my.conf

      [mysqld]
      user=mysql
      character-set-server=utf8
      default_authentication_plugin=mysql_native_password
      secure_file_priv=/var/lib/mysql
      expire_logs_days=7
      sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
      max_connections=1000
       
      [client]
      default-character-set=utf8
       
      [mysql]
      
      
  6. 创建一个sh脚本、把docker启动mysql的命令放到脚本里面。

    vim docker_mysql8.0.32.sh
    

    脚本内容:

    #!/bin/sh
    docker run \
    -p 3306:3306 \
    --name mysql8 \
    --privileged=true \
    --restart unless-stopped \
    -v /docker/mysql8.0.32/mysql:/etc/mysql \
    -v /docker/mysql8.0.32/logs:/logs \
    -v /docker/mysql8.0.32/data:/var/lib/mysql \
    -v /etc/localtime:/etc/localtime \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:8.0.32
    

    解释:

    -p 端口映射 
    
    --name mysql8  名称是mysql8
    
    --privileged=true 挂载文件权限设置
    
    --restart unless-stopped 设置 开机后自动重启容器
    
    -v /docker/mysql8.0.32/mysql:/etc/mysql \ 挂载配置文件【路径是上面创建的挂载路径】
    
    -v /docker/mysql8.0.32/logs:/logs \  挂载日志【路径是上面创建的挂载路径】
    
    -v /docker/mysql8.0.32/data:/var/lib/mysql \ 挂载数据文件 持久化到主机【路径是上面创建的挂载路径】
    
    -v /etc/localtime:/etc/localtime 容器时间与宿主机同步
    
    -e MYSQL_ROOT_PASSWORD=123456 设置密码
    
    -d mysql:8.0.32 后台启动,mysql
    
  7. 执行脚本

    sh docker_mysql8.0.32.sh
    
  8. 检查是否启动成功

    docker ps
    
  9. 配置链接信息

    1. 进入mysql8容器

      docker exec -it mysql8 bash
      
    2. 在容器内登录

      mysql -uroot -p
      
    3. 设置权限

      grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
      
      use mysql
      
      ALTER user 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
      
      ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
      
      FLUSH PRIVILEGES;
      
文章来源:https://blog.csdn.net/a332056918/article/details/135241904
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。