写点什么

软件测试 | 客户端怎么访问内网数据库

  • 2023-08-06
    北京
  • 本文字数:3163 字

    阅读完需:约 10 分钟

更多学习资料戳!!!

很多情况下,MySQL 数据库都会安装在企业内网,而有很多图形化客户端工具通常安装在本机,如果两个网络无法直接联通,那么客户端也无法正常连接数据库。很多数据库厂商都提供了相应的功能,例如 Oracle,客户端可以通过连接管理器(CMAN)来访问网中的 Oracle 数据库,MySQL 能实现类似功能吗?答案是肯定的,来看下面的例子。


假设有如下服务器和客户端:


中转服务器 IP 为 202.108.15.169(192.168.161.43)


内网服务器 IP 为 192.168.161.30,在端口 3313 上启动这 MySQL 服务。


客户端为 192.168.52.239(IP),操作系统为 Windows,且安装了 SecureCRT(一个远程连接工具)。


其中客户端可以和中转服务器联通,但无法和内网服务器连通。


首先,在客户端运行 MySQL Query Brower(一个图形化工具),直接连接内网数据库,测试是否能连接。其连接界面和结束分别如图 31-1 和图 31-2 所示。



显然,因为网络不能直接连通,所以连接失败。


下面介绍两种方法来实现客户端对数据库的连接。


方法 1:使用 secureCRT 客户端工具。


secureCTR 是一个可以通过多种协议连接远程服务器的客户端工具,具体介绍可以到其官方网站(http://www.vandyke.com/)进行查看。通过 SecureCRT 工具连接到中转服务器,并创建 SSH Turnal,具体操作步骤如下。


(1)单击 Session 的属性,选择“Connection”→“Port Forwarding”选项,进入如图 31-3 所示的界面:


(2)单击“Add”按钮,出现如图 31-4 所示的“Local Port Forwarding Properties”对话框,在“Name”文本框中随便输入名字;“Local”栏下的“IP”文本框中输入 127.0.0.1,“Port”文本框中随便输入一个未使用的端口,例如 9987;“Remote”栏下的“Hostname”文本框中输入内网数据库的 IP 地址,这里是 192.168.161.30,,而“Port”文本框中输入“3333”;单击“ok”按钮设置成功。



(3)在内网数据库(其 IP 地址为 192.168.161.30)上增加一个用户 hr,“Host”设置为 192.168.161.43。

grant select on dbname.* to test@192.168.161.43 identified by '123';
复制代码


(4)客户端重新登录,在“Server Host”文本框中填写本节 IP(1270.0.1),“Port”文本框中填写“9987”,并在“Username”和“Password”文本框中输入上下文中创建的用户名和密码,然后再“Dafault Schema”文本框中填入登录的数据库名称,如图 31-5 所示。



(5)单击“OK”按钮,连接成功,进入数据库 hr,如图 31-6 所示。



方法 2:使用 MySQL PRoxy(MySQL 代理)工具。


MySQL PRoxy 是 MySQL AB 公司新开发的一个工具,写作本书的时候还是测试版。它的功能和 Oracle 的连接管理器(CMAN)有些类似,是位于客户端和服务端中间的一个小程序。但是它的功能比 CMAN 更多,除了可以进行连接的转发外,还可以进行查询的监控、过滤、分析、负载均衡(Load Balance)、失败飘逸(Failover)等其他更多的功能,具体功能的使用大家可以查看官方文档(http://forge.mysql.com/wiki/MySQL_Proxy)这里我们仅仅介绍它对于连接转发功能的使用。


(1)在中转服务器(202.108.15.169)上下载 MySQL Proxy 的最新版本


http://dev.mysql.com/downloads/mysql-proxy/index.html),下载的方法和下载 MySQL 软件类似,这里就不再赘述。下载后的文件名为 mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz。


(2)解压下载的文件如下。

[zzx@zzx ~]$ tar xzvf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz mysql-proxy-0.6.0-linux-rhas4-x86/ mysql-proxy-0.6.0-linux-rhas4-x86/sbin/ mysql-proxy-0.6.0-linux-rhas4-x86/sbin/mysql-proxy mysql-proxy-0.6.0-linux-rhas4-x86/share/ ...... mysql-proxy-0.6.0-linux-rhas4-x86/share/mysql-proxy/xtab.lua
复制代码

(3)进入解压后的目录,发现有两个子目录的 share 和 sbin。

[zzx ~]$ cd mysql-proxy-0.6.0-linux-rhas4-x86  [zzx ~/mysql-proxy-0.6.0-linux-rhas4-x86]$ ls -l 总用量 16 drwxr-xr-x 4 zzx zzx 4096 9 月 12 08:48 ./ drwx------ 5 zzx zzx 4096 1 月 11 15:33 ../ drwxr-xr-x 2 zzx zzx 4096 9 月 12 08:48 sbin/ drwxr-xr-x 3 zzx zzx 4096 9 月 12 08:48 share/
复制代码

(4)其中 share 中有很多以。lua 为后缀的文件,这些是 MySQL Proxy 对客户端进行查询监控、分析等操作的脚本。sbin 目录中只有一个文件 mysql-proxy,用它来启动 MySQL Proxy 服务。


(5)执行./mysql-proxy--help-all 命令,查看 mysql-proxy 工具的使用方法。

[zzx ~/mysql-proxy-0.6.0-linux-rhas4-x86/sbin]$ ./mysql-proxy --help-all Usage:  mysql-proxy [OPTION...] - MySQL Proxy Help Options:  -?, --help Show help options  --help-all Show all help options  --help-admin Show options for the admin-module  --help-proxy Show options for the proxy-module admin module  --admin-address=<host:port> listening address:port of internal admin-server (default: :4041) proxy-module  --proxy-address=<host:port> listening address:port of the proxy-server (default: :4040)  --proxy-read-only-backend-addresses=<host:port> address:port of the remote slave-server(default: not set)  --proxy-backend-addresses=<host:port> address:port of the remote backend-servers (default: 127.0.0.1:3306)  --proxy-skip-profiling disables profiling of queries (default: enabled)  --proxy-fix-bug-25371 fix bug #25371 (mysqld > 5.1.12) for older libmysql versions  --proxy-lua-script=<file> filename of the lua script (default: not set)  --no-proxy Don't start proxy-server Application Options:  -V, --version Show version  --daemon Start in daemon-mode  --pid-file=<file> PID file in case we are started as daemon
复制代码

这些参数中,对连接转发最重要的参数是--proxy-backend-addresses=host:port,它告诉 MySQL Proxy 要连接到的目标 MySQL 服务的 IP 和端口。


(6)启动 MySQL Proxy 服务,并指定--proxy-backend-addresses 为目标数据库的 IP 地址和端口。

[zzx ~/mysql-proxy-0.6.0-linux-rhas4-x86/sbin]$ ./mysql-proxy --proxy-backend-addresses=192.168.161.30:3313 & [2] 3690 [1] Done ./mysql-proxy proxy-backend-addresses=192.168.161.30:3313
复制代码

(7)用 netstat 观察一下启动的服务:

[zzx ~/mysql-proxy-0.6.0-linux-rhas4-x86/sbin]$ netstat -nlp (Not all processes could be identified, non-owned process info  will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:4040 0.0.0.0:* LISTEN 3690/mysql-proxy tcp 0 0 0.0.0.0:4041 0.0.0.0:* LISTEN 3690/mysql-proxy ......
复制代码


其中,4040 端口是默认的代理端口,客户端连接的时候直接指向此端口;4040 是默认是管理模块端口,这里不用管它。


(8)在 Windows 客户端启动 MySQL Query Browser,在登录界面的“Server Host”文本框中输入中转服务器的 IP 地址,“Port”文本框中输入 MySQL Proxy 的代理端口 4040,“Username”和“Password”输入实际数据库的用户名和密码,如图 31-7 所示。


(9)单击“OK”按钮,成功登录数据库,如图 31-8 所示。


从方法 1 和方法 2 可以看出,方法 1 的优点是更通用,不仅能对 MySQL 服务进行连接的转发,而且还可以对其他类似的问题都可以采用这种办法进行解决,以达到客户端正常访问内网服务的目的。但是这种方法也有自己的缺点,就是必须要打开 secureCRT 相应的 SESSION,连接才可以生效;方法 2 的优点是不依赖于客户端的其他服务,只要中转服务器上启动代理服务,客户端就可以正常访问,缺点是只针对 MySQL 使用。大家可以根据自己的实际应用环境进行选择。

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | 客户端怎么访问内网数据库_测试_测吧(北京)科技有限公司_InfoQ写作社区