docker容器中连接宿主机mysql数据库

最近要在docker中使用mysql数据库,首先考虑在ubuntu的镜像中安装mysql,这样的脚本和数据库都在容器中,直接访问localhost:3306,脚本很简单,如下:

import pymysql# 建立数据库连接
db = pymysql.connect(port=3306,host="localhost",user="root",password="password",database="my_db"
)# 创建游标对象
cursor = db.cursor()# 执行SQL查询
sql = "SELECT * FROM user"
cursor.execute(sql)# 获取查询结果
result = cursor.fetchall()# 处理查询结果
for row in result:print(row)# 关闭数据库连接
db.close()

但这样有个问题,数据库不能持久化,每次更新应用都要更更新数据库,而且每个应用都带个数据库会导致资源浪费,所以需要把数据库放在宿主机器,但这样宿主机和容器网络要相通。

于是我在windows中先试验连接,首先通过如下方式启动

docker run -it --network host --name my_continer_name my_image_name

注意我指定了host的网络模式,即主机和容器共享网络,理论上来讲在容器内访问宿主机可以通过localhost:3306访问了,但是一直遇到一个错误:

ConnectionRefusedError: [Errno 111] Connection refused

……

pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")

后来查询才发现,window不支持host模式,所以开了也没用。

window安装DockerDesktop无法使用host网络模式解决方案_docker注册服务为什么不认host-CSDN博客文章浏览阅读2.3k次,点赞7次,收藏12次。创建网桥启动容器的同时绑定网桥同时设置固定ip​启动另一个服务​使用网桥的好处就是容器之间是共享网络的,双向的,比–link的方式要灵活,而且容器内ip可以指定号,更加可控。_docker注册服务为什么不认hosthttps://blog.csdn.net/qq_35921773/article/details/134972007那么只能通过主机IP访问了,于是通过如下命令查询主机IP:

ipconfig

找到主机ip后替换上述 代码中的localhost,结果访问又报错

pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'MININT-3D1VJ7H.mshome.net' (using password: YES)")

上面的报错是说连接上mysql,但访问密码错了,但我确实是用root用户访问的,仔细观察发现通过容器访问宿主机的用户并不是root,而是

root@'MININT-3D1VJ7H.mshome.net

MySQL 用户身份验证是基于用户名和主机名的组合,当以 root 用户身份连接到 MySQL 服务器时,MySQL 会根据提供的主机名来确定连接的具体身份。可以使用通配符 % 来表示任何主机,为 root 用户授予来自任何主机的访问权限。

所以这个用户是另一个用户,你需要在mysql中执行以下命令给这个访问用户改成你的密码:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

 完成以上命令就能访问了。不过需要注意这样做可能会增加安全风险,因为允许 root 用户从任何主机连接可能会使数据库更容易受到攻击

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

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

相关文章

HTML5基本语法

文章目录 HTML5基本语法一、基础标签1、分级标题2、段标签3、换行及水平线标签4、文本格式标签 二、图片标签1、格式2、属性介绍 三、音频标签1、格式2、属性介绍 四、视频标签1、格式2、属性介绍 五、链接标签1、格式2、显示特点3、属性介绍4、补充(空链接&#xf…

虚设备与Spooling技术

虚设备(Virtual Device)和Spooling技术是操作系统中用于提高输入/输出(I/O)效率的两种技术。下面分别对它们进行解释: ### 虚设备(Virtual Device) 虚设备是一种软件技术,它允许多个…

安装stable-baselines3[extra]

新方法: %pip install AutoROM.accept-rom-license0.4.2 %pip install stable-baselines3[extra]旧方法: https://www.atarimania.com/rom_collection_archive_atari_2600_roms.html https://drive.google.com/file/d/1uuPaYGf2f4DaEUJkS36LvSEWokgC8qj…

拼多多,藏着水果版中国地图

越来越多人开始在拼多多买水果。在发现这个现象后,我询问他们同一个问题:“那你收到过烂掉的吗?” 几乎所有频繁下单的人都告诉我,收到过。他们在拼多多买全国各地的水果,偶尔收到烂掉的,但依然会继续在拼…

OpenCloudOS 8.8 一键安装 Oracle 11GR2 单机

前言 Oracle 一键安装脚本,演示 OpenCloudOS 8.8 一键安装 Oracle 11GR2 单机(231017)过程(全程无需人工干预)。 ⭐️ 脚本下载地址:Shell脚本安装Oracle数据库 安装准备 1、安装好操作系统,建…

工业物联网关为智能制造业提供哪些支撑?天拓四方

随着科技的飞速发展,智能制造业已成为工业领域的转型方向。在这一转变中,工业物联网关发挥着至关重要的作用。作为连接物理世界与数字世界的桥梁,工业物联网关不仅实现了设备与设备、设备与云平台之间的互联互通,更通过实时数据采…

设计模式(五)创建者模式之工厂模式

工厂模式 工厂模式上面类图代码实现Coffee 抽象类AmericanCoffeeLatterCoffeeCoffeeStoreUser 简单工厂模式增加工厂方法更改CoffeeStore 类优缺点扩展静态工厂 工厂方法模式概念结构具体类图代码实现Coffee类AmericanCoffeeLatterCoffee抽象工厂CoffeeFactoryAmericanCoffeeFa…

Android studio中如何下载sdk

打开 file -> settings 这个页面, 在要下载的 SDK 前面勾上, 然后点 apply 在 platforms 中就可以看到下载好的 SDK: 如果sdk下载失败是不是硬盘没有权限,管理员权限从启android studio运行下载sdk

MySQL 基本语法讲解及示例(上)

第一节:MySQL的基本操作 1. 创建数据库 在 MySQL 中,创建数据库的步骤如下: 命令行操作 打开 MySQL 命令行客户端或连接到 MySQL 服务器。 输入以下命令创建一个数据库: CREATE DATABASE database_name;例如,创建一…

android 常用工具

adb root adb root adb remountadb logcat # clear adb logcat -c# 记录到文件adb logcat -v time > log.txtadb 查看当前运行包名 adb shell "dumpsys window|grep mCurrentFocus"查案GPU dumpsys gfxinfo dumpsys gfxinfo package# 显卡使用情况 cat /sys/…

明星直播带货 即将走向终结

在用户看来是演员、明星的人。在电商看来只是没有变现的流量而已。 但是明星直播带货即将走向终结,这可能是历史的必然。双十一,贾乃亮直播间宣称 2, 899 的羽绒服只卖449,但是后续被网友发现在其他地方同款居然只要 220 到 270 之间。 贾乃…

ApplicationEventPublisher的使用、Spring事件发布

spring事件的订阅发布,适用业务解耦合 使用场景:新用户注册之后,需要发放优惠券;一个订单服务在接收到新订单时发布一个“订单已创建”事件,库存服务和通知服务分别订阅该事件;日志和监控;实时通知系统;异…

React的form表单自定义校验规则

使用antd开发的过程中&#xff0c;必定会遇到需要对form表单进行必填校验的处理&#xff0c;正常情况下&#xff0c;我们都会一个空的必填校验&#xff0c;如下&#xff1a;一般我们只需要简单配置rules即可 <FormItem label"管理员姓名" {...itemLayout.wholeLi…

银行数仓项目实战(二)--数据采集(Kettle的抽取(E)转换(T)加载(L))

Kettle安装 Kettle又名PDI 要求电脑中有Java环境。 下载Kettle9.0的安装包&#xff0c;如有需要可以联系up私发噢。 注意&#xff01;&#xff01;&#xff01; 解压路径不能有中文&#xff0c;空格 解压后双击spoon.bat即可使用 链接数据库需要相应的驱动&#xff0c;Oracle的…

Python图像处理库之pyvips使用详解

概要 在图像处理领域,高效和快速的图像处理工具对于开发者来说至关重要。pyvips 是一个强大的 Python 库,基于 libvips 图像处理库,提供高效、快速且节省内存的图像处理能力。pyvips 支持多种图像格式,并且能够执行各种复杂的图像处理任务,如裁剪、缩放、旋转、滤波等。本…

采用了宽电压设计的测径仪为什么仍旧需要到现场勘察电力环境

关键字: 测径仪宽电压设计,测径仪电压范围,电压影响测径仪,测径仪车间电压 设备宽电压设计是指该设备能够在一定范围的电压波动内正常工作&#xff0c;而不会因为电压的轻微变化而导致性能下降或损坏。宽电压设计通常涉及到电源电路的优化和设计&#xff0c;以确保设备在电压波…

【C语言习题】31.冒泡排序

文章目录 作业标题作业内容2.解题思路3.具体代码 作业标题 冒泡排序 作业内容 实现一个对整形数组的冒泡排序 2.解题思路 先了解一下冒泡排序&#xff1a; 两两相邻的元素进行比较&#xff0c;如果前面元素大于后面元素就交换两个元素的位置&#xff0c;最终的结果是最大的…

代码随想录刷题经历

最近要着手于准备秋招了&#xff0c;之前都是零零散散的刷题&#xff0c;并且刷过就忘&#xff0c;于是乎准备用这篇博客记录刷题的经历和思想。 1、数组 2、链表 3、哈希表 4、字符串 5、双指针 6、栈与队列 7、二叉树 8、回溯算法 9、贪心算法 10、动态规划 11、单…

在浏览器中,设置小于1px的边框可能会被渲染为1px。这是由于浏览器的渲染引擎对小于1px的值处理不一致

为了实现小于1px的视觉效果&#xff0c;你可以使用一下几种方法 方法一&#xff1a;使用 CSS 的 transform 属性来缩放边框 你可以先设置一个1px的边框&#xff0c;然后使用 transform: scale() 来缩小它。 .element { border: 1px solid black; transform: scale(0.5); tran…

基于格网拓扑关系的边缘点检测

1、背景介绍 前文已介绍对点云进行格网处理,可以计算平面点云面积、格网拓扑关系构建,相关博客如下: (1)点云格网过程可视化(C++ PCL)-CSDN博客 (2)