Docker Desktop 中安装 MySQL 并开启远程访问的详细教程
是在 Docker Desktop 中安装 MySQL 并开启远程访问的详细教程:
一、安装 MySQL 容器
拉取 MySQL 镜像:
docker pull mysql:latest
这将从 Docker Hub 上拉取最新版本的 MySQL 镜像。如果你想使用特定版本的 MySQL,可以将 latest 替换为具体的版本号,例如 mysql:8.0。
运行 MySQL 容器:
docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password -p 3303:3306 mysql:latest
docker run -d:表示在后台运行容器。
–name mysql-container:为容器命名为 mysql-container,你可以使用自己喜欢的名称。
-e MYSQL_ROOT_PASSWORD=your_password:设置 MySQL 的 root 用户密码,将 your_password 替换为你想要设置的密码。
-p 3303:3306:将容器内的 3306 端口映射到主机的 3303 端口,这样你就可以通过主机的 3303 端口访问容器内的 MySQL 服务。
二、配置 MySQL 允许远程访问
进入 MySQL 容器:
docker exec -it mysql-container bash
这将进入到 mysql-container 容器的命令行界面。
登录 MySQL 服务:
mysql -uroot -p
输入之前设置的 your_password 登录 MySQL。
修改 MySQL 配置允许远程访问:
sql
USE mysql;
– 创建允许远程访问的用户或修改 root 用户允许远程访问
CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
– 授予用户权限
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION;
– 刷新权限
FLUSH PRIVILEGES;
将 your_user 和 your_password 替换为你想要设置的用户名和密码。
CREATE USER ‘your_user’@‘%’ IDENTIFIED BY ‘your_password’;:创建一个可以从任何 IP 地址访问的用户。如果你想只允许从特定 IP 地址访问,可以将 % 替换为相应的 IP 地址,例如 ‘your_user’@‘192.168.1.100’。
GRANT ALL PRIVILEGES ON . TO ‘your_user’@‘%’ WITH GRANT OPTION;:授予用户在所有数据库和表上的所有权限,并允许该用户授予其他用户权限。
注1:
查看当前用户及其权限:
sql
SELECT user, host FROM mysql.user;
注2:
检查主机上的 MySQL 服务占用情况
使用命令行检查:
cmd
netstat -ano | findstr :3306
这将显示使用 3306 端口的进程的 PID(进程标识符)。
如果你看到有进程正在使用 3306 端口,你可以根据 PID 在任务管理器中查看具体的进程信息。在任务管理器中,点击 “详细信息” 选项卡,找到相应的 PID,确认是否是主机上的 MySQL 服务。
这会列出所有 MySQL 用户及其允许的连接来源(host)。
检查 root 用户是否允许远程连接:
如果 host 为 %,表示允许从任何主机连接。
如果 host 为 localhost,表示只允许本地连接。
三、配置防火墙和网络
确保主机防火墙允许 3306 端口访问:
在 Windows 上,你可以打开 Windows 防火墙高级设置,创建一个新的入站规则,允许 TCP 端口 3306 的访问。
在 macOS 上,打开系统偏好设置 -> 安全与隐私 -> 防火墙,确保允许 MySQL 服务的访问。
检查 Docker 网络设置:
确保 Docker Desktop 的网络设置正常,一般默认设置下应该可以正常工作。如果有问题,可以尝试重启 Docker Desktop 或检查网络模式,通常使用默认的 bridge 模式即可。
四、测试远程连接
使用 MySQL 客户端连接:
在你的电脑上,使用 MySQL 客户端工具(如 MySQL Workbench、Navicat 或命令行)进行连接。
连接参数如下:
主机:你的 Docker 主机的 IP 地址(如果你在本地测试,可以使用 127.0.0.1 或 localhost)。
端口:3303。
用户:你创建的 your_user 或 root。
密码:你设置的 your_password。
注意事项
安全考虑:
开启远程访问会带来一定的安全风险,建议设置强密码,并仅允许必要的 IP 地址访问,避免使用 % 允许所有 IP 访问,除非你确实需要从任何地方访问。
数据持久化:
上述方法将 MySQL 数据存储在容器内,容器删除后数据会丢失。如果需要持久化数据,可以使用 Docker 卷,在运行容器时添加 -v /host/path:/var/lib/mysql 参数,将容器内的 /var/lib/mysql 目录映射到主机的 /host/path 目录,例如:
docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 -v /my/host/directory:/var/lib/mysql mysql:latest
通过上述步骤,你应该可以在 Docker Desktop 中成功安装 MySQL 并开启远程访问,使你的电脑能够连接到该 MySQL 服务。记得在操作过程中,根据你的具体需求和实际情况调整相关参数和设置,同时注意安全和数据的保存问题。
相关文章:
Docker Desktop 中安装 MySQL 并开启远程访问的详细教程
是在 Docker Desktop 中安装 MySQL 并开启远程访问的详细教程: 一、安装 MySQL 容器 拉取 MySQL 镜像: docker pull mysql:latest这将从 Docker Hub 上拉取最新版本的 MySQL 镜像。如果你想使用特定版本的 MySQL,可以将 latest 替换为具体…...

计算机网络 (39)TCP的运输连接管理
前言 TCP(传输控制协议)是一种面向连接的、可靠的传输协议,它在计算机网络中扮演着至关重要的角色。TCP的运输连接管理涉及连接建立、数据传送和连接释放三个阶段。 一、TCP的连接建立 TCP的连接建立采用三次握手机制,其过程如下&…...

麦田物语学习笔记:构建游戏的时间系统
基本流程 1.代码思路 (1)新建一个TimeManager.cs (2)创建枚举变量来表示四季,在TimeManager里需要的变量有: 游戏内的秒,分钟,小时,天,月,年;游戏内的季节;控制一个季节有多少个月;控制时间的暂停;计时器tikTime (3)在Settings里添加计时器的阈值,以及各个时间的进位 (4)初始化…...

Tauri教程-进阶篇-第二节 命令机制
“如果结果不如你所愿,就在尘埃落定前奋力一搏。”——《夏目友人帐》 “有些事不是看到了希望才去坚持,而是因为坚持才会看到希望。”——《十宗罪》 “维持现状意味着空耗你的努力和生命。”——纪伯伦 Tauri 技术教程 * 第五章 Tauri的进阶教程 第二节…...

candb++ windows11运行报错,找不到mfc140.dll
解决问题记录 mfc140.dll下载 注意:放置位置别搞错了...

提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息
网络和IP地址计算器 https://www.sojson.com/convert/subnetmask.html提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息。 子网掩码转换 子网掩码 /26 的含义二进制表示:/26 表示前 26 位是网络部分,剩下的 6 位是主机部分。对应的子网掩码为 255…...
vscode离线安装插件--终极解决方案
目录 离线安装插件安装方法 vscode连接远程服务器中的docker远程连接python jupyter开发 离线安装插件 使用vscode开发过程中,有一些内网服务器没法连接外网,造成安装插件不方便,网络上很多文章提供了很多方法,比较常见的一种是&…...

LabVIEW启动时Access Violation 0xC0000005错误
问题描述 在启动LabVIEW时,可能出现程序崩溃并提示以下错误:Error 0xC0000005 (Access Violation) Access Violation错误通常是由于权限不足、文件冲突或驱动问题引起的。以下是解决此问题的全面优化方案: 解决步骤 1. 以管理员身份运行…...

string(一)
一、了解string 可以看成是字符顺序表。 二、string遍历方式 1、下标[ ] 重载了[] for(int i 0; i < s.size(); i) {cout << s[i]; } 2、迭代器 auto it s.begin(); while(it ! s.end()) {cout << *it;it; } 3、范围for for(auto ch : s) {cout <&l…...

计算机网络 (41)文件传送协议
前言 一、文件传送协议(FTP) 概述: FTP(File Transfer Protocol)是互联网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码࿰…...

C++ STL之容器介绍(vector、list、set、map)
1 STL基本概念 C有两大思想,面向对象和泛型编程。泛型编程指编写代码时不必指定具体的数据类型,而是使用模板来代替实际类型,这样编写的函数或类可以在之后应用于各种数据类型。而STL就是C泛型编程的一个杰出例子。STL(Standard …...
redisson 连接 redis5报错 ERR wrong number of arguments for ‘auth‘ command
依赖版本 org.redisson:redisson-spring-boot-starter:3.25.2 现象 启动报错 org.redisson.client.RedisException: ERR wrong number of arguments for ‘auth’ command. channel: [xxx] command: (AUTH), params: (password masked) 原因 redis6以下版本认证参数不包含用…...
LeetCode:131. 分割回文串
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:131. 分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。返回 s 所…...
React-useState讲解
useState 让页面“动”起来 例如实现一个 click 计数功能,普通变量无法实现。即:修改普通变量无法触发组件的更新 rerender 通过 useState 即可实现。 state 是什么 State, A component’s memory —— 这个比喻非常好! props 父组件传…...
混币器是什么,波卡跨链交易平台
混币器是什么 混币器是一种加密货币工具,主要功能是将用户的加密货币与其他众多用户的加密货币混合在一起,打乱资金的流向和交易痕迹,使得加密货币的来源和去向难以追踪,从而增加交易的匿名性和隐私性。以下是对其工作流程和相关举例的介绍: 工作流程 用户首先将自己的加…...
【PHP】双方接口通信校验服务
请求方 使用 ApiAuthService::buildUrl($domain, [terminal > 1, ts > time()]); //http://域名/adminapi/login/platformLogin?signF7FE8A150DEC18BE8A71C5059742C81A&terminal1&ts1736904841接收方 $getParams $this->request->get();$validate ApiA…...

Web第一次作业
目录 题目 html代码 index login register css代码 base index login register 效果展示 index login register 题目 实现一个登录页面、实现一个注册页面;实现一个主页 - 登录页面:login.html - 注册页面:register.html - 主页…...
CentOS 6.8 安装 Nginx
个人博客地址:CentOS 6.8 安装 Nginx | 一张假钞的真实世界 提前安装: # sudo yum install yum-utils 一般情况下这个工具系统已经安装。 创建文件/etc/yum.repos.d/nginx.repo,输入内容如下: [nginx-stable] namenginx stab…...

网络网络层ICMP协议
网络网络层ICMP协议 1. ICMP 协议介绍 ICMP(Internet Control Message Protocol)是 TCP/IP 协议簇中的网络层控制报文协议。用于在 IP 主机、路由器之间传递控制消息,提供可能有关通信问题的反馈信息。 以及用于网络诊断或调试(…...
当父级元素设置了flex 布局 ,两个子元素都设置了flex :1, 但是当子元素放不下的时候会溢出父元素怎么解决 (css 样式问题)
一、问题 遇到个样式问题,当父级元素设置了flex 布局 ,两个子元素都设置了flex :1, 但是当子元素放不下的时候会溢出父元素怎么解决 (拖拽浏览器 使页面变小) 二、解决方法 .father{min-height: 600px;width: 100%;display: flex…...
Spring Boot 中 @RequestParam 和 @RequestPart 的区别详解(含实际项目案例)
Spring Boot 中 RequestParam 和 RequestPart 的区别详解(含实际项目案例) 在日常的 Spring Boot 开发中,我们经常会遇到表单提交、文件上传、JSON 参数绑定等需求。而在处理这类请求时,两个常见的注解——RequestParam 和 Reque…...

Oracle基础知识(五)——ROWID ROWNUM
目录 一、ROWID 伪列 二、ROWNUM——限制查询结果集行数 1.ROWNUM使用介绍 2.使用ROWNUM进行分页查询 3.使用ROWNUM查看薪资前五位的员工 4.查询指定条数直接的数据 三、ROWNUM与ROWID不同 一、ROWID 伪列 表中的每一行在数据文件中都有一个物理地址,ROWID…...
Paimon远程文件系统连接机制解析
Paimon 在处理与远程文件系统的连接和使用方面,设计了一套灵活的抽象机制。下面将结合源代码分析 Paimon 是如何实现这一点的。 核心思想是定义一个通用的 FileIO 接口,然后为不同的文件系统提供具体的实现。对于常见的 HDFS、S3、OSS 等,Pa…...
React与Vue的内置指令对比
React 与 Vue 在内置指令的设计理念和实现方式上有显著差异。Vue 提供了一套丰富的模板指令系统,而 React 更倾向于通过原生 JavaScript 语法和 JSX 实现类似功能。以下是两者的核心对比: 一、条件渲染 Vue 使用 “v-if”/ “v-else” 指令,…...

数据结构第4章 栈、队列和数组 (竟成)
目录 第 4 章 栈、队列和数组 4.1 栈 4.1.1 栈的基本概念 4.1.2 栈的基本操作 4.1.3 栈的实现 1.顺序栈 2.链式栈 3.共享栈 4.1.4 顺序栈的基本操作实现 1.初始化栈 2.判空 3.判满 4.元素进栈 5.元素出栈 6.获取栈顶元素 4.1.5 链栈的基本操作实现 1.元素进栈 2.元素出栈 4.1.6…...
x86 与 ARM 汇编深度对比:聚焦 x86 汇编的独特魅力
一、引言 汇编语言是硬件与软件的桥梁,x86 和 ARM 作为两大主流架构,其汇编语言在设计理念、指令集、编程风格上差异显著。本文以 x86 汇编为核心,结合与 ARM 的对比,解析 x86 汇编的技术细节与应用场景,助力开发者深…...

Day12 - 计算机网络 - HTTP
HTTP常用状态码及含义? 301和302区别? 301:永久性移动,请求的资源已被永久移动到新位置。服务器返回此响应时,会返回新的资源地址。302:临时性性移动,服务器从另外的地址响应资源,但…...
基于MATLAB编程针对NCV检测数据去漂移任务的完整解决方案
以下为针对NCV检测数据去漂移任务的完整解决方案,基于MATLAB编程实现,结构清晰,内容详实,满足技术深度。 NCV信号尾部漂移处理与分析 1. 任务背景与目标 神经传导速度(NCV)检测信号易受环境干扰与设备漂移…...
vue3+Pinia+element-plus 后台管理系统项目实战记录
vue3Piniaelement-plus 后台管理系统项目实战记录 参考项目:https://www.bilibili.com/video/BV1L24y1n7tB 全局api provide、inject vue2 import api from/api vue.propotype.$api apithis.$api.xxxvue3 import api from/api app.provide($api, api)import {…...

MacOS内存管理-删除冗余系统数据System Data
文章目录 一、问题复现二、解决思路三、解决流程四、附录 一、问题复现 以题主的的 Mac 为例,我们可以看到System Data所占数据高达77.08GB,远远超出系统所占内存 二、解决思路 占据大量空间的是分散在系统中各个位置Cache数据; 其中容量最…...