MySQL不会在与Rubber部署的EC2上连接

时间:2012-06-21 18:29:20

标签: mysql ruby-on-rails amazon-ec2

我正在使用橡胶来部署rails应用程序,并且无法连接到MySQL。我是否必须在EC2上手动设置MySQL,或者橡胶是否已经这样做了? 虽然这不是那么有用,但是在运行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 个答案:

答案 0 :(得分:2)

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

讨论了问题here

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

编辑 ./ 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

答案 1 :(得分:1)

在我的情况下,我在rubber.yml中输入的应用名称实际上与实际应用名称不同(项目文件保留占位符名称)...

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

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

答案 2 :(得分:0)

我不知道舵很多,但看起来它缺少一些配置。没有用户指定,也可能没有密码。

答案 3 :(得分: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;

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

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