[英]Rails: Postgres permission denied to create database on rake db:create:all
我正在尝试为开发和测试创建 postgres 数据库。 我正在使用:
宝石档案:
gem 'pg'
数据库.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: myapp_development
username: username
password:
test:
<<: *default
database: myapp_test
rake db:create:all
返回
PG::InsufficientPrivilege: ERROR: permission denied to create database
: CREATE DATABASE "myapp_development" ENCODING = 'unicode'
.... (lots of tracing)
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "database"=>"myapp_development", "username"=>"username", "password"=>nil}
myapp_test already exists
怎么了?
编辑我只是尝试将 database.yml 中的用户名更改为我在 Mac 上使用的用户名。 有效。 它还告诉我不仅maybe_test
已经存在,而且还告诉我myapp_development
已经存在。
CREATEDB
?这一切似乎太混乱了,让我想起了过去使用 Apache 进行 PHP 设置。 我不想每次创建新应用程序时都必须处理问题,并尝试遵循 Heroku 建议在开发过程中使用 PostgreSQL。
在我的Ruby on Rails项目上在postgresql
运行rake db:test:prepare
时,我遇到了同样的问题。 从错误消息中可以清楚地看出,这是用户的权限问题。 我从控制台为new_user
添加了CREATEDB
权限,如下所示。
要访问 postgres 控制台:
$ sudo -u postgres -i
postgres@host:~$ psql
在那里:
postgres=# ALTER USER new_user CREATEDB;
它现在工作完美。 您可能有数据库所有权的另一个问题,为此您可以按照以下命令更改数据库privileges
和owner
。
postgres=# GRANT ALL PRIVILEGES ON DATABASE database_name to new_user;
postgres=# ALTER DATABASE database_name owner to new_user;
查看您的架构,您的开发和测试凭据是不同的。
也许从架构中删除用户名和密码,看到您的测试数据库确实已创建。
create database demo;
create user demotest with password '123';
grant all privileges on database demo to demotest;
commit;
This is script for creation of database. But any existing database having password '123' then change your password for new database to password '1234'. This procedure working for me.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.