【问题标题】:MySQL won't connect on EC2 deploying with RubberMySQL 不会在使用 Rubber 部署的 EC2 上连接
【发布时间】:2012-06-24 01:29:28
【问题描述】:

我正在使用 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 ruby-on-rails amazon-ec2


    【解决方案1】:

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

    【讨论】:

    • 是的,我只是不确定在哪里配置它。据我了解,Rubber 解决了这个问题。在 Rubber-mysql.yml 文件中,有一些配置可用,但我没有更改它。我将其保留为默认值。
    【解决方案2】:

    我对 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 授权命令。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        问题在here讨论。

        第一个解决方案不够全面,您需要最后一个删除所有匿名用户(不仅仅是本地主机)的解决方案。这是因为 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
        

        【讨论】:

        • 太棒了,谢谢!这指出了匿名用户的“问题”,所以我只是运行 mysql_secure_installation 来“保护”我的安装。另外,我在 Yosemite 上使用 MariaDB。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-26
        相关资源
        最近更新 更多