Mac下docker安装MySQL8.0.34

学习并记录一下如何用docker部署MySQL

  1. 在Docker中搜索并下载MySQL8.0.x的最新版本

  2. 下载好后,在Images中就可以看到MySQL的镜像了

    通过下面的命令也可以查看

    bash 复制代码
    docker images
  3. 启动镜像,使用下面的命令就可以启动镜像了

    bash 复制代码
    docker run -itd --name mysql8.0.34 -p 3306:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=root mysql:8.0.34

    解释:

    1. -i :即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用
    2. -t:分配一个伪tty,一般与 -i 连用
    3. -d:在后台运行容器,并且打印容器id
    4. --name:镜像名称
    5. -p:端口映射,容器内端口3306映射到容器外的3306上
    6. --privileged:为容器提供权限
    7. -e :设置镜像参数
      1. MYSQL_ROOT_PASSWORD:设置root用户的密码
  4. 此时,在容器内部已经初始化好了MySQL了,但是一般来说,我们需要把MySQL的配置文件和datadir挂在到docker外部,所以我们还需要后面的步骤

  5. 创建config和data目录

    bash 复制代码
    mkdir -p /Users/xxx/docker/data/mysql8.0.34/{config,data}
  6. 切换到config目录

    bash 复制代码
    cd /Users/xxx/docker/data/mysql8.0.34/config
  7. 把config文件从镜像内部复制出来

    bash 复制代码
    docker cp mysql8.0.34:/etc/my.cnf ./
  8. 确认config文件cat my.cnf

    复制代码
    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
    
    [mysqld]
    #
    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M
    #
    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin
    #
    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M
    
    # Remove leading # to revert to previous value for default_authentication_plugin,
    # this will increase compatibility with older clients. For background, see:
    # https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
    # default-authentication-plugin=mysql_native_password
    skip-host-cache
    skip-name-resolve
    datadir=/var/lib/mysql
    socket=/var/run/mysqld/mysqld.sock
    secure-file-priv=/var/lib/mysql-files
    user=mysql
    # 忽略表名大小写
    lower_case_table_names=1
    
    pid-file=/var/run/mysqld/mysqld.pid
    [client]
    socket=/var/run/mysqld/mysqld.sock
    
    !includedir /etc/mysql/conf.d/
  9. 停掉并删除之前启动的MySQL镜像

    bash 复制代码
    docker stop mysql8.0.34
    docker rm mysql8.0.34
  10. 重启MySQL

    bash 复制代码
    docker run -itd --name mysql8.0.34 -p 3306:3306 --privileged=true --restart=always -v /Users/xxx/docker/data/mysql8.0.34/data:/var/lib/mysql -v /Users/xxx/docker/data/mysql8.0.34/config/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=root mysql:8.0.34
  11. 使用连接工具测试MySQL

相关推荐
南城以南溫暖如初1478 分钟前
从零搭建24小时自助健身系统:技术选型与核心模块实战
java·spring boot·redis·mysql·vue·mybatis
苍狗T35 分钟前
k8s 控制器管理
linux·运维·云原生·容器·kubernetes
鱼鳞_1 小时前
热门八股-MySQL
数据库·mysql
这个DBA有点耶1 小时前
数据库“家谱”系列之一:关系型数据库的4大核心组件详解
数据库·mysql·架构
Frank_refuel2 小时前
MYSQL【进阶】 -> 索引(了解)
数据库·mysql
wxchyy2 小时前
手把手教你入门云计算(二):这些技术改变了世界,你也能轻松掌握
hadoop·阿里云·docker·云原生·华为云·云计算·运维开发
l1t2 小时前
DeepSeek总结的DuckDB 如何更快地运行递归 CTE
java·开发语言·数据库·mysql·duckdb
名字还没想好☜3 小时前
Prometheus 告警实战:写 alerting rules、用 Alertmanager 做路由分组与抑制
运维·前端·javascript·docker·kubernetes·prometheus
空の鱼3 小时前
Mac 上 Node 版本管理(brew + nvm 共存方案)
macos·node.js
请你吃div3 小时前
Node 后端项目 Docker 自动部署教程(GitHub + 宝塔 + Self-hosted Runner)
后端·docker·node.js