2016-06-27 26 views
5

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

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 
+0

脚本没有看到剧本有没有很多工作要做,除了盲目猜测 – jaydel

+0

我添加它打破了一部分。实际的剧本是巨大的。这是在另一台服务器上工作。我的猜测是它与MYSQL的设置方式有关。 –

+0

看起来像一个MySQL凭据关注。你的应用在哪里指定用户和登录?也许这将是一个很好的机会来设置一个新的MySQL用户更严格的privs,而不是使用root? – Nathan

回答

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

这是MySQL错误,这意味着你正在尝试与用户根连接到数据库车次达本地主机空白或没有密码。 请确保你的mysql服务器上有root @ localhost用户,或者确保提供正确的密码。

+0

我从root的mysql帐户中删除了密码。它能够保存。然而这是非常不安全的,我需要解决这个问题。究竟是什么使用没有密码的root用户?那正在运行的东西,似乎我必须将其配置为使用密码运行?为什么当我使用我的部署用户自己运行脚本时,脚本以root身份运行? –

+0

脚本可以作为任何用户执行。更重要的是,当脚本连接到数据库时,使用什么用户名和密码,以及如何连接。 –

1

它可能来自几个问题,因为你描述你的工作流程。

从小型背景:运行与RAILS_ENV=production ruby script9000.rb

相关问题