Windows10环境下“远程”访问docker中centos系统里的MySQL数据库入门到妥协地解决

本文主要是介绍Windows10环境下“远程”访问docker中centos系统里的MySQL数据库入门到妥协地解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近,喵哥在学习数据库,遇到一个很棘手的问题,具体描述如下。

可以在黑底白字的界面熟练操作数据库的确很酷,但是实际应用数据库肯定不是为了耍酷,怎么把数据库运用到程序中去才是真理。所以,喵哥就投入到怎么在Windows10上调用docker中centos系统里面MySQL的数据库的工作中。然而,事情远没有想象中那么简单,安装好MySQL之后,一直连不上centos里的数据库。后来,去找视频学习了一下,发现需要用网络桥接的办法来实现宿主与docker中容器的通信,但是由于视频的教程说得不是太清楚,而且都是在Linux环境中,与Windows有些出入,在设置docker容器的网络连接时出了些状况,导致没有实现在Windows下连接docker中centos里的MySQL数据库。暂时先放到一边。观看教程视频也不是没有收获,至少知道了来宿主连接docker容器需要桥接,至于为什么,怎么桥接,还得去研读计算机网络。

经过几天时间的学习,发现docker中容器用的IP地址都是专用IP地址,比如我用的centos的IP地址是:172.17.0.2。专用IP地址是一些用于机构内部通信的地址,一共有三个分块:

 起点地址终点地址或可记为又称为
110.0.0.010.255.255.25510.0.0.0/824位块
2172.16.0.0172.31.255.255172.16.0.0/1220位块
3192.168.0.0192.168.255.255192.168.0.0/1616位块

专用IP地址要与互联网通信需要用到网络地址转换NAT(Network Address Translation),这就使得专用IP地址的主机可以与互联网通信,这种通信过程中,专用网络内部的主机是主导机器(通信必须由它发起),所以这种方法实现的通信主机是不能用来当作服务器的。也就无法解决喵哥遇到的问题。

另外一种解决方案是利用桥接的方法,好在发现docker的默认网络配置方法是桥接(bridge模式),这也验证了我之前看过的教程,所以离最终的目标已经很接近了。但是喵哥目前对于在windows下桥接docker容器不是太懂,对于docker的地址设置及docker容器地址的分配也毫无头绪,这些作为下一个学习的目标,等喵哥有了进一步的想法会立即更新到博客。

虽然无法在Windows下实现访问docker中centos里的MySQL,但是学习怎么编程使用MySQL还是必要的,所以喵哥换了个思路,在docker中建两个centos容器,这样就可以保证他们处于一个专用网段。比如,172.17.0.2和172.17.0.3。两个系统可以互相通信是互相使用MySQL的基础,但不是充分的。要让其他系统访问自己的数据库,需要给其他数据库授权。

mysql> grant all PRIVILEGES on db_name.* to 'username'@'xxx.xxx.xx.x' identified by 'password' WITH GRANT OPTION;#说明#/*数据库的授权用grant:grant 权限 on 数据库.表 to 用户 【identified by '密码'】 with grant option;其中,权限有:select、insert、update、delete和all privileges。数据库为本地存在的数据库名,表为数据库中的表,如果要全选某个项目,可用*代替,如*.*表示所有数据库的表,exp_country.*表示exp_country中的所有表,max_sal.k1表示max_sal中的k1表。用户,可以在本地自建。也可以是远程的,用'username'@'IP地址'表示。密码为可选项。附带的with grant option可以使得被授权用户也有赋予其他用户权限的权力数据库收回权限用revoke:revoke 权限 【on 数据库.表】 option from 用户; */

首先,在172.17.0.2主机设置172.17.0.3的访问权限:

然后,在172.17.0.3主机上就可以登入172.17.0.2上的MySQL,我授权的是使用exp_country这个数据库。

在172.17.0.2查看数据库:

在172.17.0.3查看数据库:

 

可见172.17.0.3已经可以使用172.17.0.2下的exp_country数据库了。


附表:MySQL的数据库权限

MySQL数据库权限
权 限
 
说明
ALL除GRANT OPTION外的所有权限
ALTER使用ALTER TABLE
ALTER ROUTINE使用ALTER PROCEDURE和DROP PROCEDURE
CREATE使用CREATE TABLE
CREATE ROUTINE使用CREATE PROCEDURE
CREATE TEMPORARY TABLES使用CREATE TEMPORARY TABLE
CREATE USER使用CREATE USER、 DROP USER、 RENAME USER和REVOKEALL PRIVILEGES
CREATE VIEW使用CREATE VIEW
DELETE使用DELETE
DROP使用DROP TABLE
EXECUTE使用CALL和存储过程
FILE使用SELECT INTO OUTFILE和LOAD DATA INFILE
GRANT OPTION使用GRANT和REVOKE
INDEX使用CREATE INDEX和DROP INDEX
INSERT使用INSERT
LOCK TABLES使用LOCK TABLES
PROCESS使用SHOW FULL PROCESSLIST
RELOAD使用FLUSH
REPLICATION CLIENT服务器位置的访问
REPLICATION SLAVE由复制从属使用
SELECT使用SELECT
SHOW DATABASES使用SHOW DATABASES
SHOW VIEWSHOW CREATE VIEW
SHUTDOWN使用mysqladmin shutdown(用来关闭MySQL)
SUPER使用CHANGE MASTER、 KILL、 LOGS、 PURGE、 MASTER和SET GLOBAL。还允许mysqladmin调试登录
UPDATE使用UPDATE
USAGE无访问权限

 

 

 

这篇关于Windows10环境下“远程”访问docker中centos系统里的MySQL数据库入门到妥协地解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/236823

相关文章

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现