怎么学做网站制作,那个网站做系统好,西安seo代运营,python做网站内容爬虫最近要在docker中使用mysql数据库#xff0c;首先考虑在ubuntu的镜像中安装mysql#xff0c;这样的脚本和数据库都在容器中#xff0c;直接访问localhost#xff1a;3306#xff0c;脚本很简单#xff0c;如下#xff1a;
import pymysql# 建立数据库连接
db pymysql.…最近要在docker中使用mysql数据库首先考虑在ubuntu的镜像中安装mysql这样的脚本和数据库都在容器中直接访问localhost3306脚本很简单如下
import pymysql# 建立数据库连接
db pymysql.connect(port3306,hostlocalhost,userroot,passwordpassword,databasemy_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的网络模式即主机和容器共享网络理论上来讲在容器内访问宿主机可以通过localhost3306访问了但是一直遇到一个错误 ConnectionRefusedError: [Errno 111] Connection refused …… pymysql.err.OperationalError: (2003, Cant 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 rootMININT-3D1VJ7H.mshome.net (using password: YES)) 上面的报错是说连接上mysql但访问密码错了但我确实是用root用户访问的仔细观察发现通过容器访问宿主机的用户并不是root而是 rootMININT-3D1VJ7H.mshome.net MySQL 用户身份验证是基于用户名和主机名的组合当以 root 用户身份连接到 MySQL 服务器时MySQL 会根据提供的主机名来确定连接的具体身份。可以使用通配符 % 来表示任何主机为 root 用户授予来自任何主机的访问权限。 所以这个用户是另一个用户你需要在mysql中执行以下命令给这个访问用户改成你的密码 GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY password; FLUSH PRIVILEGES; 完成以上命令就能访问了。不过需要注意这样做可能会增加安全风险因为允许 root 用户从任何主机连接可能会使数据库更容易受到攻击