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字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里