我刚刚在运行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: ###
我尝试过root
和philip
我已经为PG创建了角色和用户。
答案 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中的所有角色。我重新创造了我需要的东西,这一切都很好