锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. 尚硅谷谷粒商城项目笔记——五、使用docker安装mysql

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

0
  • 软件开发
  • 发布于 2024-08-17
  • 0 次阅读
黄健
黄健

五、使用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_USER 和 MYSQL_PASSWORD 环境变量,但它们的值被设置为了 root。对于 MySQL 容器,MYSQL_USER 和 MYSQL_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 用户远程登录等安全选项。

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

原文链接: https://blog.csdn.net/B6665X/article/details/140954046

标签: #数据库 67 #docker 18
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.