2016-06-27 23 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

相關問題