2

我正在使用 Rubber 部署 Rails 应用程序,但无法连接到 MySQL。我是否必须在 EC2 上手动设置 MySQL,或者 Rubber 是否应该已经这样做了?虽然这不是很有帮助,但这里是运行 rake 时的日志输出:

 ** [out :: db01.memepluspl.us] rake aborted!
 ** [out :: db01.memepluspl.us] 
 ** [out :: db01.memepluspl.us] Access denied for user ''@'db01.memepluspl.us' to database 'meme_plus_plus_production'
 ** [out :: db01.memepluspl.us] 
 ** [out :: db01.memepluspl.us] 
 ** [out :: db01.memepluspl.us] Tasks: TOP => db:migrate => environment
4

4 回答 4

2

如果其他人遇到这个问题,那是因为 mysql 现在添加了默认匿名用户,但访问受限。

这个问题在这里讨论。

第一个解决方案不够全面,最后需要一个删除所有匿名用户(不仅仅是本地主机)的解决方案。这是因为 MYSQL 将在 USER 之前在 HOST 上进行身份验证,因此匿名用户 ''@'your.host.com' 将优先于 'dbuser'@'your.host.com' (记录在mysql 文档中)并且橡胶将正在尝试连接完整的主机名。

编辑您的./config/rubber/deploy-mysql.yml:

rubber.sudo_script "create_master_db", <<-ENDSCRIPT
  mysql -u root -e "create database #{env.db_name};"
  mysql -u root -e "delete from mysql.user where user='';"   <<-- ADD THIS LINE
  ...
ENDSCRIPT
于 2012-10-05T06:48:53.530 回答
1

就我而言,我在 Rubber.yml 中输入的应用程序名称实际上与实际应用程序名称不同(项目文件保留占位符名称)...

我 ssh 进入实例,寻找current/然后cat config/database.yml 尝试运行连接命令 rake 会尝试从那里的东西运行并且错误在那里,所以我建议尝试更好地调试正在发生的事情

我猜我必须更改 Rubber-mysql.yml 配置...我现在重新创建暂存的东西,我认为它至少应该通过这个问题.. gl

于 2012-07-03T05:54:01.950 回答
0

我不太了解方向舵,但它看起来缺少一些配置。没有指定用户,也可能没有密码。

于 2012-06-21T18:35:03.957 回答
0

我对 Rubber 一点都不熟悉,所以我不知道它是否应该为您创建 MySQL 帐户,但这里是手动操作的方法:

mysql -u root
mysql> grant all on meme_plus_plus_production.* to 'user'@'db01.memepluspl.us' identified by 'password';
mysql> flush privileges;
mysql> exit;

您可能需要输入 MySQL 根帐户的密码;例如,在 Ubunutu 上,默认值为“密码”。

另请注意,我的示例将数据库中每个表的完全读写权限授予指定用户。如果您想使用降低的权限,请查找 MySQL grant 命令。

于 2012-06-21T18:47:04.053 回答