【问题标题】:MYSQL Access denied ruby script in Rails appRails 应用程序中的 MYSQL 访问被拒绝 ruby​​ 脚本
【发布时间】:2016-06-27 19:05:31
【问题描述】:

我有一个 Rails 4.2 应用程序部署到 Ubunutu 14.4 Trusty 服务器。我现在遇到的问题是无法运行为我保存记录的脚本。我收到此错误:

Access denied for user 'root'@'localhost' (using password: NO) (Mysql2::Error)

我已将生产数据库配置为使用用户名 root 和正确的密码,但在重新启动服务器并尝试新配置后,我得到了上述错误。

我正在通过导航到服务器上的 lib/ 并运行 ruby script9000.rb 来运行脚本。该脚本运行良好,直到它尝试保存记录。

为什么会发生这种情况?


脚本在Year.find_or_create_by 跳闸

  def save_record(record)
    sanitize_record(record)
    full_year = complete_year(@@record["year_number"])
    if full_year >= 2014
      year = Year.find_or_create_by(year: full_year)
      year.records.create(@@record)
    end
  end

【问题讨论】:

  • 看不到剧本除了瞎猜也没啥好做的
  • 我添加了它中断的部分。实际的脚本是巨大的。这是在我拥有的另一台服务器上工作的。我的猜测是它与 MYSQL 的设置方式有关。
  • 看起来像 MySQL 凭据问题。您的应用在哪里指定用户和登录名?也许这将是一个设置具有更严格权限的新 MySQL 用户的好机会,而不是使用 root?
  • 它在 database.local.yml 文件中指定了这个。我可以创建一个新的数据库用户。也许这实际上是问题所在,尽管我不确定。我现在就试试。

标签: mysql ruby-on-rails-4 ubuntu-14.04


【解决方案1】:
Access denied for user 'root'@'localhost' (using password: NO)

这是 MySQL 错误,这意味着您正在尝试使用来自 localhost 的用户 root 连接到数据库,并且密码为空白或没有密码。 确保您的 mysql 服务器上有用户 root@localhost 或确保提供正确的密码。

【讨论】:

  • 我从 root 的 mysql 帐户中删除了密码。它能够保存。然而,这是非常不安全的,我需要解决这个问题。究竟是什么使用没有密码的root用户?正在运行的那个东西,似乎我必须将其配置为使用密码运行?当我使用部署用户自己运行脚本时,为什么脚本会以 root 身份运行?
  • 脚本可以作为任何用户执行。更重要的是,使用什么用户和密码,脚本何时连接到数据库以及如何连接。
【解决方案2】:

当您描述您的工作流程时,它可能来自多个问题。

从小范围内:使用RAILS_ENV=production ruby script9000.rb 运行您的脚本

【讨论】:

    猜你喜欢
    • 2013-05-08
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多