MySQL不会在与Rubber部署的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 

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

我ssh进入实例,寻找current/cat config/database.yml然后只是尝试运行connect命令rake会尝试从那里的东西运行并且错误在那里,所以我建议尝试更好地调试这是怎么回事

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

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

这里讨论的问题。

第一个解决方案不够全面,你需要最后一个删除所有匿名用户(不仅仅是localhost)。 这是因为MYSQL将在USER之前在HOST上进行身份validation,因此匿名用户”@ 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 

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

我根本不熟悉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命令。