oracle - 本地数据库 docker 到 VPN 中的 AWS 数据库
问题描述
我是Docker的初学者,希望大家可以帮忙,非常感谢。
我从公司存储库下载了一个 docker 映像,并设法从该映像在本地计算机中创建了一个容器,我们将其命名为 mydb。它是通过以下命令创建的: docker run --name mydb -p 1521:1521 -d mycompany.com:5000/docker-db:20.0.04
我可以通过我的 sqldqveloper 使用以下连接字符串访问数据库:system/abc123@127.0.0.1:1521/ORCL
我们公司在 AWS 中有一个数据库服务器,我们把它命名为 awsdb。我可以在 vpn 登录后访问它。我可以在 sqldqveloper 中使用以下连接字符串访问数据库: system/abc123@awsdb.amazonaws.com:1521/awsdb
问题:如何使用数据库链接“my_dblink”在 mydb 中创建到 awsdb 的数据库链接?例如。从 dual@my_dblink 中选择 sysdate。
我尝试使用以下命令:
CREATE PUBLIC DATABASE LINK my_dblink
CONNECT TO system
IDENTIFIED BY abc123
USING 'awsdb.amazonaws.com:1521/awsdb';
但它返回错误 ORA-12543: TNS:destination host unreachable。
我尝试删除容器并通过设置 net=host 重新创建它: docker run --name mydb -p 1521:1521 -d --net=host mycompany.com:5000/docker-db:20.0.04 然后现在我可以'甚至没有连接是与system/abc123@127.0.0.1:1521/ORCL 错误 ORA-12541 返回:没有侦听器。
如何打开内部 docker 与 AWS 数据库服务器之间的连接?谢谢你。
解决方案
首先,我确实相信您需要了解您要完成的工作。当您在两个数据库之间创建数据库链接时,您必须满足的主要要求是在您使用的端口中它们之间具有网络连接。由于其中一个存储在公共云中,至少您需要:
- 安装 docker 的网络与
AWS
. - 但是,由于您的 docker 安装在您的本地笔记本电脑中,因此
AWS
应该可以对 Internet 开放,这是一个安全问题,并且可能未启用。 - 此外,在此连接中可能需要使用的所有端口中都需要防火墙规则。
由于您正在使用VPN
允许您访问AWS Cloud
资源的登录名,因为您正在通过它进行连接(可能使用Active Directory
和/或 a certificate
,甚至可能在您的公司和资源SSO federation
之间使用),数据库无法使用它进行连接。AD
AWS
总而言之,这是不可能的,如果我是安全部门的人,我绝不会允许这样做。您唯一的选择是在docker
其中创建一个数据库AWS
,然后在那里创建数据库链接。
推荐阅读
- angular - ngFor中的角度多个表单值
- svg - 如何从 SVG 中提取一个元素及其参考元素?
- mysql - 根据 MySQL (v8) 中的条件创建重复行
- microsoft-graph-api - Microsoft Bot Framework:任务模块
- python - 不圆列
- google-sheets - 使用 IMPORTRANGE 或 VLOOKUP 返回数据时是否无法包含字体颜色?
- ls - 我如何 ls 一个目录来获取它的数据,但没有它的文件?
- python - 如何在 Python 的列表推导中执行多个表达式?
- python - python将列表中的多个dicts与多个条件进行比较
- javascript - Vuejs 不会发送正确的数据