如何在vagranted虚拟机上访问postgresql?

我使用postgresql通过Vagrant虚拟机制作,并希望将其用作我的rails应用程序数据库。

我使用类似的Vagrantfile:

Vagrant.configure("2") do |config| config.vm.network :private_network, ip: "192.168.33.18" config.vm.provision :chef_solo do |chef| # I take cookbook from https://github.com/opscode-cookbooks/postgresql chef.add_recipe "postgresql::server" chef.json = { postgresql: { config: { ssl: false, listen_addresses: '*' }, password: { postgres: 'postgres' } } } end end 

接下来我vagrant up并期望下一个database.yml将工作:

 development: database: app_development adapter: postgresql host: '192.168.33.18' username: root 

但这不会发生.. Rake任务失败并出现错误:

 could not connect to server: Connection refused Is the server running on host "192.168.33.18" and accepting TCP/IP connections on port 5432? 

我看到该端口实际上没有打开

 $ nmap -p 5432 192.168.33.18 Starting Nmap 6.25 ( http://nmap.org ) at 2013-05-07 22:05 FET Nmap scan report for 192.168.33.18 Host is up (0.00047s latency). PORT STATE SERVICE 5432/tcp closed postgresql 

我可以在vm上看到一些postgres进程,并且没有任何错误的vagrant输出,所以我相信postgres正常工作。

  932 postgres 20 0 126m 9.9m 8916 S 0 2.7 0:00.03 postgres 941 postgres 20 0 97460 1348 192 S 0 0.4 0:00.00 postgres 944 postgres 20 0 126m 1728 548 S 0 0.5 0:00.06 postgres 945 postgres 20 0 126m 1488 316 S 0 0.4 0:00.05 postgres 946 postgres 20 0 126m 2768 1000 S 0 0.7 0:00.00 postgres 947 postgres 20 0 97456 1584 352 S 0 0.4 0:00.00 postgres 

如何在我的rails应用程序中设置Vagrant在虚拟机上使用db?

更新我的pg_hba.conf

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer ########### # Other authentication configurations taken from chef node defaults: ########### local all all trust host all all 0.0.0.0/0 md5 

我向所有读者道歉,但问题在于我的注意力不集中。 虽然我在配置中指向listen_addresses: '*' ,然后我意外地重置了这个配置,所以在最终配置中采用默认的listen_addresses: 'localhost'值。 修复后,此端口被打开。