我创建了一个用户并授予它对生产数据库的完全访问权限:
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用户。
答案 0 :(得分:1)
MySQL消息有一个重要的指针:
拒绝访问用户' myuser' @' localhost' (使用密码:否)
它告诉您,客户端没有使用密码。显然,您没有在生产数据库的database.yml
中正确配置密码。一旦你在那里配置了正确的密码,它就会起作用。
答案 1 :(得分:1)
rails默认使用生产环境,因此如果您将db更改为其他环境。
我犯了同样的错误
bundle exec rake db:migrate RAILS_ENV=production