Docker 安装 MySQL 并使用 Navicat 连接

news2024/11/15 20:00:36

本文目录

  • 1. 拉取 MySQL 镜像
  • 2. 创建并运行一个 MySQL 容器
  • 3. 验证MySQL容器是否创建并运行成功
    • 3.1 进入 MySQL 容器
    • 3.2 进入 MySQL
    • 3.3 查看 host 和 user
  • 4. MySQL 开启远程访问权限
    • 4.1 切换数据库
    • 4.2 给 root 用户分配远程访问权限
    • 4.3 强制刷新权限
  • 5. 服务器配置 3306 的开放端口
  • 6. 查看 Ubuntu IP
  • 7. 可能出现的问题
    • 7.1 进入 MySQL 数据库
    • 7.2 选择数据库
    • 7.3 更改密码加密方式
    • 7.4 更新用户密码
    • 7.5 刷新权限
  • 8. Navicat 连接 MySQL 测试

1. 拉取 MySQL 镜像

在没有拉取 MySQL 镜像之前的镜像列表:

在这里插入图片描述

  • 可以通过下面的命令拉取 MySQL 镜像:
docker pull mysql

在这里插入图片描述

这将下载最新版本的 MySQL 镜像到虚拟机中。

2. 创建并运行一个 MySQL 容器

docker run --name=mysql-test -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123456 -d mysql

参数说明:

  • –name:指定了容器的名称,方便之后进入容器的命令行。
  • -itd:其中,i 是交互式操作,t 是一个终端,d 指的是在后台运行。
  • -p:指在本地生成一个随机端口,用来映射 mysql 的 3306 端口。
  • -e:设置环境变量。
  • MYSQL_ROOT_PASSWORD=root123456:指定了 MySQL 的 root 密码。
  • -d mysql:指运行 mysql 镜像,设置容器在在后台一直运行。

运行截图:

在这里插入图片描述

【补充知识】:

在 Docker 中,使用 -e 参数可以设置环境变量。环境变量是影响容器运行时行为的一些配置值。这些值可以在容器内部使用,例如在应用程序中访问数据库时,可以使用环境变量来指定数据库连接信息。

下面是一些使用 -e 参数运行 Docker 容器时的示例:

  1. 设置单个环境变量:

    docker run -e VAR_NAME=VAR_VALUE image_name
    

    这将在容器中设置一个名为 VAR_NAME 的环境变量,其值为 VAR_VALUE

  2. 设置多个环境变量:

    docker run -e VAR1_NAME=VAR1_VALUE -e VAR2_NAME=VAR2_VALUE image_name
    

    这将在容器中设置两个环境变量 VAR1_NAMEVAR2_NAME,分别对应的值为 VAR1_VALUEVAR2_VALUE

  3. 从环境变量文件设置:

    docker run --env-file env_file_name image_name
    

    env_file_name 是包含环境变量键值对的文件。每行应该包含一个键值对,例如 VAR_NAME=VAR_VALUE。Docker 将读取文件中的键值对,并在容器中设置相应的环境变量。

通过设置环境变量,可以在容器中配置应用程序所需的各种参数,例如数据库连接字符串、API密钥等。这样可以轻松地在不同环境中部署容器,而无需对应用程序的配置进行硬编码。

3. 验证MySQL容器是否创建并运行成功

docker ps

在这里插入图片描述

3.1 进入 MySQL 容器

docker exec -it mysql-test /bin/bash

3.2 进入 MySQL

mysql -uroot -p
Enter password:root123456

在这里插入图片描述

3.3 查看 host 和 user

select host,user from mysql.user;

在这里插入图片描述

  • 确保 roothost% 即代表可以远程连接。

4. MySQL 开启远程访问权限

4.1 切换数据库

注意:默认应该就是这个,不切换也行,保险起见还是切换一下

use mysql;

4.2 给 root 用户分配远程访问权限

GRANT ALL PRIVILEGES ON *.* TO root@'%' WITH GRANT OPTION;

参数说明:

  • GRANT:赋权命令
  • ALL PRIVILEGES:当前用户的所有权限
  • ON:介词
  • .:当前用户对所有数据库和表的相应操作权限
  • TO:介词
  • ‘root’@’%’:权限赋给 root 用户,所有 ip 都能连接
  • WITH GRANT OPTION:允许级联赋权

4.3 强制刷新权限

FLUSH PRIVILEGES;

在这里插入图片描述

5. 服务器配置 3306 的开放端口

windows 如何开放端口

在这里插入图片描述

在这里插入图片描述

  • 在虚拟机上开放 3306 端口,允许 MySQL 的入站连接,可以使用以下命令通过防火墙允许入站连接:

    ufw allow 3306
    

在这里插入图片描述

6. 查看 Ubuntu IP

# 查看 IP 地址
ip addr

# 也可以用这个命令
ifconfig

在这里插入图片描述

在这里插入图片描述

7. 可能出现的问题

  • 可能出现的问题截图

img

  • 问题出现原因

这是因为 MySQL8 之前密码加密规则为 mysql_native_password,而 MySQL8 之后的加密规则为 caching_sha2_password,也就是说,如果要用 Navicat 连接 MySQL,其实只需要将密码规则改回 mysql_native_password 即可;

  • 解决办法如下

7.1 进入 MySQL 数据库

docker exec -it mysql-test /bin/bash
mysql -uroot -p
Enter password:root123456

7.2 选择数据库

use mysql;

7.3 更改密码加密方式

IDENTIFIED BY ‘root123456’:连接时输入密码,密码为 root123456

ALTER USER 'root'@'%' IDENTIFIED BY 'root123456' PASSWORD EXPIRE NEVER;

7.4 更新用户密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123456';

7.5 刷新权限

FLUSH PRIVILEGES;

运行截图:

在这里插入图片描述

8. Navicat 连接 MySQL 测试

在这里插入图片描述

至此,Docker 安装 MySQL 并使用 Navicat 连接 正式结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iOS开发中的APP内活动之通用链接

首先,我们先来了解下APP内活动,这是苹果官方给的说明:https://developer.apple.com/cn/help/app-store-connect/offer-in-app-events/overview-of-in-app-events简单来说,就是我们在苹果后台开发者后台里填写关于自己APP内的一些具…

《MySQL》对表进行操作(DDL语句)

文章目录 💡创建表💡修改表💡删除表 在了解下列语句前,先掌握一下指令 # 查看表内容 desc [表名] # 详细查看表内容 show create table [表名] \G💡创建表 # 创建表 create table [表名] ([字段1] [类型1],[字段2] […

嵌入式 - UART使用进阶

UART – Advanced Features 概要 / Overview 最简单直接的使用UART接口的方式,是在轮循操作中来设置和处理UART接口。 轮询式UART的问题是轮询方式本身就是低效率的。 如果我们的UART被配置为115200的波特率和8N1,那么传输一个字符需要多长时间&#xff…

一款支持AI思维导图的AI助手——ChatMindAI

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

“智慧水利”怎么建?这份智慧水利整体解决方案 值得参?

2021年,补齐水利信息化突出短板,提升强监管支撑能力。 2025 年,全面提升水利数字化、网络化水平,明显提升重点领域智能化水平。 2035 年,全面支撑水治理体系和治理能力现代化。 构建天空地一体化水利感知网&#xf…

python怎么使用Pillow库来添加图片水印

当使用Pillow库来添加图片水印时,下面是一个示例代码: 请确保在运行示例代码之前,已经安装了Pillow库(可以使用pip install pillow命令进行安装)。示例代码中,打开原始图片、创建透明的水印图层、绘制水印文…

计模式篇(Java):桥接模式

上一篇:计模式篇(Java):适配器模式 九、桥接模式 需求示例 当我们对不同手机类型的不同品牌实现操作编程,如图: 那么它对应的类图就是 传统方式解决需求分析: 扩展性问题,如果需要在增加手机的样式&#x…

什么是业务逻辑攻击 (BLA),大家为什么一定要要关注它?

想象一下:您的开发团队刚推出了一款令人惊叹的全新应用程序,它具有顶级的API安全性,通过客户端保护对其进行了强化,甚至还设置了针对机器人攻击的防御措施。你感到这款产品很有安全保障,自己的团队出色地完成了工作。 …

SAP从入门到放弃系列之生产执行-领用与消耗概述

文章目录导航 一、生产物资领用1.1、概述1.2、项目中自开发领料功能方式一:创建预留的方式方式二:创建UB订单方式 二、生产投料 一、生产物资领用 1.1、概述 生产的备料方式因为企业的行业特点以及企业对材料库存管理的流程设置,企业使用的…

MATLAB | 高斯变量概率密度函数的理论与实际对比

一、仿真实验目的 生成一组高斯变量,并基于生成的数据统计其概率密度函数,与理论高斯概率密度函数进行对比,观察生成的高斯变量的概率分布。 二、解决思路 (1)利用randn函数生成高斯随机变量 (2&#xf…

利用Visual Studio 2022 导出目标dll API接口

利用Visual Studio 2022 导出目标dll API接口 操作路径: 指令如下: dumpbin /exports /out:C:\\Users\\Administrator\\Desktop\\PlantSimCore.txt C:\\Users\\Administrator\\Desktop\\PlantSimCore.dll dumpbin /exports /out:C:\\Users\\Administrator\\Desktop\\

Ubuntu18.04安装Qt5.14.2

一、安装 第一步: 官网Index of /archive/qt 下载安装包, 或者国内网址下载 https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.9/5.9.0/ 我安装的是QT5.14.2 中的 qt-opensource-linux-x64-5.14.2.run ; 第二步:ctrlT 打开终端输入命…

Python的Logging模块

1.日志的相关概念🍃 日志是指记录系统或应用程序运行状态、事件和错误信息的文件或数据。在计算机系统中,日志通常用于故障排除、性能分析、安全审计等方面。日志可以记录各种信息,如系统启动和关闭时间、应用程序的运行状态、用户登录和操作…

数字化就是做系统?广州数字化转型服务公司推荐

数字化转型是一个与数字化技术密切相关的概念,很多不了解数字化转型的企业往往会认为数字化转型就是提升企业的数字化技术应用水平和不断增加数字化系统的功能,也就是将数字化转型认为是做系统。但实际上,开利网络认为,数字化转型…

使用vtk在一个窗口中创建多个几何体

引言 该示例为官网上的例子。在一个窗口中创建了多个不同的几何体。 其效果如下: 示例 开发环境 使用QtCreator4.11.2,Qt5.14.2。使用的vtk9.2的库及其头文件。创建空项目。 示例代码 其pro文件中的内容: QT core#greaterThan(QT_MAJOR_V…

【产品文档】埋点需求文档模板

今天和大家免费分享埋点需求文档模板。埋点文档的目的是帮助开发人员准确地实施埋点,并确保收集到的数据符合预期,以便后续分析和改进产品。 【模板下载】 这个模板可以在 Axure高保真原型哦 小程序里免费下载哦 【文档截图】

微搭低代码实现横向滚动效果

目录 1 添加滚动容器2 滚动内容设置总结 在小程序场景中,有很多横向滚动的效果,比如我们的官方模板电商展示里就有一个横向滚动的效果,本篇我们解读一下横向滚动该如何实现 1 添加滚动容器 不管是横向滚动还是纵向滚动,我们都是依…

【Python】NLP参数控制模板

前言 学过AI的都知道训练一个模型需要调整很多参数,为了有效的管理这些参数、不至于让代码的参数写的乱七八糟,有必要写一套控制参数的模板。 argparser argparser是python当中的参数解析器,在NLP当中主要是用来接受和使用参数的。一个使用它…

Word技巧【自用】

表格断开 做到类似这样的效果,很简单,用边框刷就可以 设定边框的横线,以及磅值,就可以像画三线表一样断开了