当前位置: 首页 > news >正文

尚硅谷谷粒商城项目笔记——五、使用docker安装mysql

五、使用docker安装mysql

注意:

因为电脑是AMD芯片,自己知识储备不够,无法保证和课程中用到的环境一样,所以环境都是自己根据适应硬件软件环境重新配置的,这里的虚拟机使用的是VMware。
使用 Docker 安装 MySQL 与安装 Redis 类似,以下是详细步骤:

1拉取 MySQL 镜像:

从 Docker Hub (之前有设置之镜像加速)拉取 MySQL 的官方镜像。可以指定版本号,或者使用 latest 来获取最新版本:

docker pull mysql:latest

2运行 MySQL 容器:

运行 MySQL 容器时,我需要设置环境变量,如 MYSQL_ROOT_PASSWORD(root 用户的密码),并映射端口和数据卷。以下是一个示例命令:

docker run --name some-mysql -p 3306:3306 \-v /var/lib/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=my-secret-pw \-e MYSQL_DATABASE=mydb \-e MYSQL_USER=myuser \-e MYSQL_PASSWORD=mypassword \--restart always -d mysql

[!NOTE]

注意这里的密码的值不要使用root,否则会产生error==>>问题在于我在运行 MySQL 容器时同时设置了 MYSQL_USERMYSQL_PASSWORD 环境变量,但它们的值被设置为了 root。对于 MySQL 容器,MYSQL_USERMYSQL_PASSWORD 是用来配置普通用户的,而不能用来配置 root 用户。对于 root 用户的密码,我应该只使用 MYSQL_ROOT_PASSWORD 环境变量。

参数说明:

  • --name some-mysql:为容器指定一个名称。
  • -p 3306:3306:将容器的 3306 端口映射到宿主机的 3306 端口。
  • -v /var/lib/mysql:/var/lib/mysql:将宿主机的 /var/lib/mysql 目录挂载到容器的 /var/lib/mysql 目录,实现数据持久化。
  • -e:设置环境变量,用于配置 MySQL。
  • --restart always:确保容器在 Docker 重启后自动启动。
  • -d mysql:以 detached 模式运行 MySQL 容器。

3确认 MySQL 容器正在运行:

使用 docker ps 命令检查 MySQL 容器是否成功启动:

docker ps

4连接到 MySQL 服务器:

可以使用 mysql 命令行工具连接到 MySQL 服务器:

mysql -uroot -p

当提示输入密码时,输入我在步骤 2 中设置的 MYSQL_ROOT_PASSWORD

[!NOTE]

可以直接使用 Docker 容器中的 MySQL 服务,但是我需要确保宿主机上安装了 MySQL 客户端,或者可以直接在 Docker 容器的命令行中使用 mysql 命令。以下是两种方法:【我是用第二种】

方法一:在宿主机上使用 MySQL 客户端连接到 Docker 容器中的 MySQL 服务

  1. 确保我已经在宿主机上安装了 MySQL 客户端。如果没有,请根据我的 Linux 发行版安装它。

  2. 使用以下命令连接到 Docker 容器中的 MySQL 服务:

    mysql -uroot -p -h 127.0.0.1 -P 3306
    

    这里 -h 127.0.0.1 指定了宿主机的 IP 地址,-P 3306 指定了映射到宿主机的端口号。

  3. 当提示输入密码时,输入我在创建 MySQL 容器时设置的 MYSQL_ROOT_PASSWORD

方法二:在 Docker 容器的命令行中使用 mysql 命令

  1. 首先,找到我的 MySQL 容器 ID 或名称:

    docker ps
    
  2. 然后,使用 docker exec 命令进入容器的命令行界面:

    docker exec -it some-mysql /bin/bash
    

    some-mysql 替换为我的 MySQL 容器名称。

  3. 在容器内部,直接使用 mysql 命令连接到 MySQL 服务:

    mysql -uroot -p
    

    由于我已经在容器内部,不需要指定主机和端口,只需输入密码即可。

请注意,如果我在容器内部使用 mysql 命令,我将直接与 MySQL 服务交互,而不需要在宿主机上安装 MySQL 客户端。但是,这种方法要求我能够进入容器的命令行界面。如果我只需要偶尔管理 MySQL 数据库,通常在宿主机上安装 MySQL 客户端会更方便。

退出mysql容器时用exit命令

5配置 MySQL 时区(可选):

MySQL 容器默认使用 UTC 时区。如果我需要更改时区,可以在启动容器时挂载自定义的 my.cnf 配置文件:

docker run ... -v /mycustomconfig/my.cnf:/etc/mysql/my.cnf ...

my.cnf 文件中,可以添加如下配置来设置时区:

[mysqld]
default-time-zone='+08:00'

6安全配置 MySQL(可选):

MySQL 提供了一个脚本来设置安全选项,可以在第一次启动时运行它:

docker exec -i some-mysql mysql_secure_installation

按照提示操作,设置移除匿名用户、禁止 root 用户远程登录等安全选项。

大学生制作不易,各位愿意的话可以打赏,不愿意的话也没关系,学习最重要。最后,哪里写的不合适请告诉我,我弄明白后再修正,谢谢!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深入理解Vue slot的原理
  • K8S中Containerd之ctr和crictl简介以及常见操作
  • vs+qt项目转qt creator
  • 云原生真机实验
  • 高翔【自动驾驶与机器人中的SLAM技术】学习笔记(五)卡尔曼滤波器一:认知卡尔曼滤波器;协方差矩阵与方差;
  • 一个java类实现UDP代理转发
  • MySQL--查询数据
  • LCR 158. 库存管理 II
  • JVM知识总结(垃圾收集算法)
  • 淘客返利系统中的负载均衡与流量控制策略
  • Windows安装MySQL8.0.X版本归档包(zip包)最新教程
  • 【性能优化】Webpack打包优化
  • Android Gradle开发与应用 (一) : Gradle基础
  • 不同专业方向如何在ChatGPT的帮助下完成选题
  • 【JavaEE初阶】懒汉模式与饿汉模式及指令重排序问题
  • flask接收请求并推入栈
  • overflow: hidden IE7无效
  • react 代码优化(一) ——事件处理
  • Redis中的lru算法实现
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 你真的知道 == 和 equals 的区别吗?
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 温故知新之javascript面向对象
  • 物联网链路协议
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 正则与JS中的正则
  • 字符串匹配基础上
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #### go map 底层结构 ####
  • #if和#ifdef区别
  • #laravel 通过手动安装依赖PHPExcel#
  • $.ajax中的eval及dataType
  • $NOIp2018$劝退记
  • (07)Hive——窗口函数详解
  • (Java)【深基9.例1】选举学生会
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (vue)页面文件上传获取:action地址
  • (笔试题)合法字符串
  • (编译到47%失败)to be deleted
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (万字长文)Spring的核心知识尽揽其中
  • (原創) 未来三学期想要修的课 (日記)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)iOS字体
  • (转)关于pipe()的详细解析
  • .env.development、.env.production、.env.staging