MySQL 无法连接到使用 Rubber 部署的 EC2

标签 mysql ruby-on-rails amazon-ec2

我正在使用 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

最佳答案

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

问题讨论here .

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

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

关于MySQL 无法连接到使用 Rubber 部署的 EC2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11144502/

相关文章:

mysql - 将 mysql 值赋给变量 inline

ruby-on-rails - 如何在 View 中获取模型的 per_page 编号?

php crontab -l 从命令行显示不同的结果

mysql - 如何选择单元格为空的最后一行

mysql - SQL 语句在 Perl 下失败,但可以从命令行运行

ruby-on-rails - Rails 表格 选择必填项

javascript - CKEditor 4 : Uncaught TypeError: Cannot read property 'langEntries' of null

tomcat - 如何在 AWS EC2 实例上扩展 Tomcat?

amazon-web-services - AWS 负载均衡器不安全

java - Mysql 正在保存从 Java 应用程序输入提供的 1 天前的日期