Postgres Rails DB Bug

时间:2014-08-30 17:37:05

标签: ruby-on-rails postgresql rake

我刚刚在运行Ubuntu的Godaddy VPS上创建了一个新的RoR项目。该应用程序设置为运行Postgres,已安装并运行。

当我做INITIAL耙时,我得到:

server$ bin/rake db:create db:migrate
FATAL:  role "root" does not exist
Run `$ bin/rake db:create db:migrate` to create your database
/usr/local/rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:898:in `rescue in connect'
/usr/local/rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:888:in `connect'
/usr/local/rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:568:in `initialize'
/usr/local/rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `new'
/usr/local/rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'
/usr/local/rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:435:in `new_connection'
/usr/local/rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:445:in `checkout_new_connection'
/usr/local/rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/........

这是我的数据库yml

development:
  adapter: postgresql
  encoding: utf8
  database: project_development
  pool: 5
  username: philip
  password: ###    
test: &TEST
  adapter: postgresql
  encoding: utf8
  database: project_test
  pool: 5
  username: philip
  password: ### - not real 

production:
  adapter: postgresql
  encoding: utf8
  database: project_production
  pool: 5
  username: philip
  password: ###

我尝试过rootphilip 我已经为PG创建了角色和用户。

3 个答案:

答案 0 :(得分:1)

在Ubuntu中,PostgreSQL默认配置为允许通过Unix套接字的本地连接仅使用与连接Unix用户相同的用户名进行身份验证。

您在自己的操作系统中以root运行应用程序。 PostgreSQL强制您使用root作为数据库用户名。如果您希望它使用其他数据库帐户,则需要以不同的用户身份运行您的应用程序。

显然,您的PostgreSQL服务器没有root帐户。

脏修复可能是通过TCP / IP进行身份验证:在host中将127.0.0.1设置为database.yml,这些限制不会产生任何影响。
绕过它的另一种方法是编辑pg_hba.conf以不需要"同一用户"本地连接。

答案 1 :(得分:0)

您需要手动创建角色和数据库:

SSH进入vps然后......

切换到默认用户:

sudo su – postgres

以此用户身份登录后,您可以创建新角色:

createuser
Enter name of role to add: philip
Shall the new role be a superuser? (y/n) y

要为您的用户配备密码,您可以在createuser命令中添加-pwprompt:

createuser --pwprompt

来源:https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-12-04

答案 2 :(得分:0)

我开始删除PG中的所有角色。我重新创造了我需要的东西,这一切都很好