fe_sendauth:在我启动rails s后查看http:// localhost:3000 /时没有提供密码

时间:2015-03-12 01:22:35

标签: ruby-on-rails ruby postgresql ruby-on-rails-4

我刚刚在这台Mac上安装了最新的Rails,我刚刚运行:

rails new testApp2 -d=postgresql

因此,一旦构建了我的新应用程序,我就启动了rails服务器:

rails s

但是当我尝试访问http://localhost:3000/上的网站时,我收到以下错误:

fe_sendauth: no password supplied

在提取的来源中,它已在以下行停止:

@connection = PGconn.connect(@connection_parameters)

我试图遵循其他一些解决方案,但它们非常复杂,我觉得我可能错过了一个软件或更简单的东西。请有人能给我一个我能理解的解决方案吗?有原因。

在我的database.yml中,我有以下内容:

# PostgreSQL. Versions 8.2 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On OS X with Homebrew:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: 5

development:
  <<: *default
  database: testApp_development

  # The specified database role being used to connect to postgres.
  # To create additional roles in postgres see `$ createuser --help`.
  # When left blank, postgres will use the default role. This is
  # the same name as the operating system user that initialized the database.
  #username: testApp

  # The password associated with the postgres role (username).
  #password:

  # Connect on a TCP socket. Omitted by default since the client uses a
  # domain socket that doesn't need configuration. Windows does not have
  # domain sockets, so uncomment these lines.
  #host: localhost

  # The TCP port the server listens on. Defaults to 5432.
  # If your server runs on a different port number, change accordingly.
  #port: 5432

  # Schema search path. The server defaults to $user,public
  #schema_search_path: myapp,sharedapp,public

  # Minimum log levels, in increasing order:
  #   debug5, debug4, debug3, debug2, debug1,
  #   log, notice, warning, error, fatal, and panic
  # Defaults to warning.
  #min_messages: notice

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: testApp_test

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
  database: testApp_production
  username: postgres
  password: <%= ENV['password'] %>

我无法让postgres.app工作,因为我一直收到一个错误,即它不会在这个版本的OSX(10.6.8)上运行,即使它声明它可以使用这个版本。所以我正在运行pgAdmin3 - 我认为它类似。

2 个答案:

答案 0 :(得分:0)

更改md5(或其他)以信任您的用户,pg_hba.conf中的本地连接 - 这将允许您在没有密码的情况下进行连接...

答案 1 :(得分:0)

在您的database.yml中,您有testApp2作为您的用户名。通常(至少在Mac上)Postgres会在Mac上创建具有您帐户名称的用户。也就是说,如果您使用用户名andy登录Mac,则Postgres的用户为andy且没有密码。看起来您在数据库中有一个名为testApp2的用户,否则它会给您错误:

FATAL: role "testApp2" does not exist

因此,您有一个名为&#34; testApp2&#34;的用户,您可以为该用户创建密码并将其添加到您的database.yml文件中。您可以使用psql从命令行执行此操作。或者,您可以将database.yml中的用户更改为计算机上的帐户名称,因为该用户已设置为无需密码即可信任。