【问题标题】:Rails: How can I access my database on my host machine (windows) from a virtualbox guest (ubuntu)?Rails:如何从虚拟机来宾(ubuntu)访问我的主机(windows)上的数据库?
【发布时间】:2013-04-28 17:45:20
【问题描述】:
我正在尝试设置我的 rails 项目(访客:ubuntu),以便它可以访问我的主机操作系统窗口上的 sql server 数据库。我正在使用虚拟框,但是我不确定我的“主机”应该在我的database.yml 文件中设置为什么。如何找出将其设置为哪个 IP 地址和端口?当我在我的 Windows 操作系统上拥有该项目时,我能够将其配置为 host:localhost
【问题讨论】:
标签:
ruby-on-rails
windows
ubuntu
virtualbox
【解决方案1】:
我必须找到列出的默认网关。所以我在 Ubuntu 上打开终端并使用以下命令:netstat -rn。这给出了以下结果......
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
从那里我注意到默认网关是10.0.2.2。我将我的 database.yml 设置如下:
development:
adapter: sqlserver
host: 10.0.2.2
database: Development
username: username12345
password: password12345
pool: 5
timeout: 5000
连接成功了!希望这可以帮助处于类似情况的其他人。
编辑:
因此,当我尝试在主机运行 SQLExpress 的计算机上进行相同的设置时,我遇到了一个非常相似的问题。下面我将概述我为使其正常工作所做的一些事情,因为它的过程有点不同。
-
您必须启用 TCP/IP 连接(在几个地方)并指定正在使用的端口。
转到:Start > All Programs > Microsoft SQL SERVER 2008 > Configuration Tools > SQL Server Configuration Manager。然后展开SQL SERVER NETWORK CONFIGURATION 并启用右侧窗格中的所有协议。现在,右键单击并从右侧窗格中的TCP/IP 中选择Properties。在Protocol 选项卡下,确保“已启用”设置为“是”。在IP Address 选项卡下,我确保Enabled 和Active 的所有IP 都设置为“是”。最后,我将我的端口1433 添加到IP8,这是我的127.0.0.1 IP,也添加到滚动框最底部的IP All。一旦应用,我通过 SQL Server Management Studio 重新启动服务器(连接后右键单击连接并选择“重新启动”)我能够连接!
我还使用了一个略有不同的database.yml 文件。
development:
adapter: sqlserver
dataserver: 10.0.2.2:1433
host: 10.0.2.2
port: 1433
database: Development
username: username12345
password: password12345
pool: 5
timeout: 5000
- 最后,记得给用户正确的权限。