我正在创建一个Rails应用程序并使用Postgresql数据库。我创建了一些表和一个用户core
,它是每个表的所有者。
postgres=# create user core with password 'n7zD5FG5';
CREATE ROLE
postgres=# create database core_apps_prod with owner core;
CREATE DATABASE
postgres=# create database core_apps_dev with owner core;
CREATE DATABASE
postgres=# create database core_apps_test with owner core;
CREATE DATABASE
我的database.yml
文件:
development:
adapter: postgresql
database: core_apps_dev
username: core
password: n7zD5FG5
host: localhost
但是,当我运行rake db:migrate
时,我收到错误
rake aborted!
FATAL: password authentication failed for user "core"
我也无法手动连接psql
:psql -U core -W -d core_apps_dev
- 我收到同样的错误。
如何允许core
在localhost
上连接到Postgresql?
SELECT * FROM pg_roles where rolname='core';
的输出是:
rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolconnlimit | rolpassword | rolvaliduntil | rolconfig | oid
---------+----------+------------+---------------+-------------+--------------+-------------+----------------+--------------+-------------+---------------+-----------+-------
core | f | t | f | f | f | t | f | -1 | ******** | | | 16392
答案 0 :(得分:0)
您需要在创建角色时为角色添加权限。要允许登录并使用rake db:create
,请使用以下命令:
create role core with login createdb password 'n7zD5FG5';
要解决您的问题,请尝试更改角色以允许登录:
alter role core with login;
如果这不起作用,请查看登录是否永久有效:
alter role core valid until 'infinity';
有关角色的更多信息:http://www.postgresql.org/docs/8.2/static/sql-createrole.html
编辑:
安装postgres时我也必须这样做:
$ psql postgres -c 'CREATE EXTENSION "adminpack";'
答案 1 :(得分:0)
该问题原来是该端口的问题。 Postgresql Activerecord适配器defaults to port 5432
,而我配置中的端口是端口5433
。我的database.yml
现在看起来像这样:
development:
adapter: postgresql
database: core_apps_dev
username: core
password: n7zD5FG5
host: localhost
port: 5433
答案 2 :(得分:-1)
新创建的用户可能缺少数据库权限。您可以为用户提供许多不同的权限。
假设您拥有psql的管理员帐户访问权限,请进入psql并运行
GRANT ALL PRIVILEGES ON DATABASE core_apps_dev to core;
答案 3 :(得分:-1)
你可以试试吗
alter role core with password "n7zD5FG5";