Virtualbox 无法连接到数据库:Mongoose/MongoDB,虚拟盒 上下文
MongoDB数据库运行在Virtualbox 无法连接到数据库:Mongoose/MongoDB,虚拟盒 上下文,virtualbox,Virtualbox,MongoDB数据库运行在Ubuntu虚拟机(VM)上 express服务器应用程序在我的主机(Windows 10)上提供一个目录 此目录与VM共享 问题 我试图在本地启动我的express应用程序,但没有成功 在VM端,通过mongo shell连接到数据库正常工作 在主机端,我刚刚使用npm启动了应用程序 我是否需要执行其他操作,以便我的主机/应用程序可以与VM中的db通信 我试过: 及 …但它不起作用 我得到这个错误: 谢谢你的帮助看来你在这里混合了两件事: 连接到虚拟机上的
Ubuntu
虚拟机(VM)上
express
服务器应用程序在我的主机(Windows 10)上提供一个目录
此目录与VM共享
问题
我试图在本地启动我的express
应用程序,但没有成功
在VM端,通过mongo shell连接到数据库正常工作
在主机端,我刚刚使用npm启动了应用程序
我是否需要执行其他操作,以便我的主机/应用程序可以与VM中的db通信
我试过:
- 及
- …但它不起作用
谢谢你的帮助看来你在这里混合了两件事:
- 连接到虚拟机上的远程数据库主机
- 在与虚拟机上的本地数据库通信的虚拟机上运行应用程序
+-------------------------+ +------------------------+
| | | |
| Windows 10 host machine | -- Shared folder -| Virtual machine |
| | application | MongoDB running |
| | | |
+-------------------------+ +------------------------+
- 在主机上运行
时,应用程序需要使用虚拟机网络地址连接到远程数据库。与虚拟机共享文件夹时没有到达数据库的报告npm run main
- 在本地计算机上运行
时,可以使用npm run main
或者虚拟机可以是网络地址localhost
您的问题与
npm
或mongodb
无关,而是与您的虚拟机连接设置有关
如果应用程序在Windows 10上运行,设置虚拟机网络并连接到数据库的最简单方法是在VirtualBox的VM设置上设置桥接器adpater
。
然后,在Ubuntu机器的主网络接口上设置dhcp
,将为您提供一个地址
编辑/etc/networking/interfaces
然后使用sudo/etc/init.d/networking restart重新启动网络
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp
使用提供的enp0s3
inet地址连接到虚拟机的数据库。要获取指定的地址,请在shell上使用ip addr
@user7364588
我没有etc/networking/interfaces,但是etc/network/interfaces中只有以下消息:
# ifupdown has been replaced by netplan(5) on this system. See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
# sudo apt install ifupdown
我还是应该应用你的建议还是使用netplan
在netplan内部,我有一个文件50-cloud-init.yaml,其中包含
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
dhcp6: false
optional: true
nameservers:
addresses: [4.2.2.1, 4.2.2.2, 208.67.220.220]
ip地址:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:e3:9f:67 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
valid_lft 85581sec preferred_lft 85581sec
inet6 fe80::a00:27ff:fee3:9f67/64 scope link
valid_lft forever preferred_lft forever
1:lo:mtu 65536 qdisc noqueue状态未知组默认qlen 1000
链接/环回00:00:00:00:00 brd 00:00:00:00:00:00:00
inet 127.0.0.1/8范围主机lo
永远有效\u lft首选\u lft永远有效
2:eth0:mtu 1500 qdisc fq_codel state UP group default qlen 1000
链接/以太08:00:27:e3:9f:67 brd ff:ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255范围全局动态eth0
有效\u lft 85581sec首选\u lft 85581sec
inet6 fe80::a00:27ff:fee3:9f67/64范围链接
永远有效\u lft首选\u lft永远有效
谢谢您的回答。我还是一个初学者,所以我理解这个概念,但是我不知道怎么做。在VirtualBox的VM设置->网络选项卡->适配器2:我单击了启用网络适配器并选择了“桥接适配器”。默认情况下,我留下了名称:“realtek wireless…”。适配器1(默认情况下)连接到NAT。我不明白这句话:“那么,设置dhcp[…]。使用此地址连接到VM的数据库。”(由于我修改了VM参数,我无法再连接到Internet…。在尝试之前,我只想检查一下。由于评论长度有限,我在“回复消息”中写下了详细信息。看来netplan
已经在配置网络了。应设置inet ip地址,在shell中使用ip addr
命令行进行检查。只要您不告诉这个命令结果,就很难说网络是否正确设置。我在尝试桥接时失去了internet连接,所以我必须重新初始化我的计算机。。。安装相同,但问题仍然存在。我只是还没有试着搭桥,因为我不想再次失去我的网络连接。