无法在生产中迁移db:migrate

时间:2014-06-05 11:27:42

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

我创建了一个用户并授予它对生产数据库的完全访问权限:

mysql> show grants for 'myuser'@'localhost';
+-----------------------------------------------------------------------------------------------------------------+
| Grants for myuser@localhost                                                                                   |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'myuser'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxx' |
| GRANT ALL PRIVILEGES ON `myapp_production`.* TO 'myuser'@'localhost'                                       |
+-----------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

但是当我耙db:migrate时,我得到了:

** [out :: mydomain.com] Mysql2::Error: Access denied for user 'myuser'@'localhost' (using password: NO)

如果我将root凭据输入database.yml,那么它似乎可以工作,但由于内部策略,我无法在生产中使用root用户。

2 个答案:

答案 0 :(得分:1)

MySQL消息有一个重要的指针:

  

拒绝访问用户' myuser' @' localhost' (使用密码:否)

它告诉您,客户端没有使用密码。显然,您没有在生产数据库的database.yml中正确配置密码。一旦你在那里配置了正确的密码,它就会起作用。

答案 1 :(得分:1)

rails默认使用生产环境,因此如果您将db更改为其他环境。

我犯了同样的错误

 bundle exec rake db:migrate RAILS_ENV=production
相关问题