2016-06-27 23 views
5

Tôi có ứng dụng Rails 4.2 được triển khai đến máy chủ Ubuntu 11.4 của Ubunutu. Vấn đề tôi đang gặp hiện nay là không thể chạy tập lệnh lưu hồ sơ cho tôi. Tôi nhận được lỗi này:Truy cập MYSQL từ chối tập lệnh ruby ​​trong ứng dụng Rails

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

Tôi đã định cấu hình cơ sở dữ liệu sản xuất để sử dụng đúng tên người dùng, nhưng sau khi khởi động lại máy chủ và thử cấu hình mới tôi nhận được lỗi ở trên.

Tôi đang chạy tới tập lệnh bằng cách điều hướng đến lib/trên máy chủ và chạy ruby script9000.rb. Kịch bản chạy tốt cho đến khi nó cố lưu một bản ghi.

Tại sao điều này có thể xảy ra?


Kịch bản các chuyến đi tại 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

mà không nhìn thấy kịch bản không có nhiều để làm ngoài việc một cách mù quáng đoán – jaydel

+0

tôi đã thêm một phần, nơi nó phá vỡ. Các kịch bản thực tế là rất lớn. Điều này đã được làm việc trên một máy chủ khác tôi đã có. Tôi đoán là nó có một cái gì đó để làm với cách MYSQL được thiết lập. –

+0

Trông giống như mối quan tâm về thông tin đăng nhập MySQL. Ứng dụng của bạn chỉ định người dùng và đăng nhập ở đâu? Có lẽ đây sẽ là cơ hội tốt để thiết lập một người dùng MySQL mới với các privs nghiêm ngặt hơn là sử dụng root? – Nathan

Trả lời

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

Đó là MySQL lỗi, đó có nghĩa là bạn đang cố gắng để kết nối với cơ sở dữ liệu với người dùng gốc từ localhost với trống hoặc không có mật khẩu. Đảm bảo bạn có root root @ localhost trên máy chủ mysql hoặc đảm bảo cung cấp mật khẩu đúng.

+0

Tôi đã xóa mật khẩu khỏi tài khoản mysql của root. Nó có thể cứu được. Tuy nhiên điều này là rất không an toàn và tôi cần phải sửa lỗi đó. Chính xác những gì đang sử dụng người dùng root mà không có mật khẩu? Điều đó đang chạy, có vẻ như tôi phải cấu hình nó để chạy bằng mật khẩu? Và tại sao kịch bản chạy dưới dạng root khi tôi đang chạy tập lệnh với người dùng triển khai của mình? –

+0

Tập lệnh có thể được thực thi như bất kỳ người dùng nào. Quan trọng hơn, những gì người dùng và mật khẩu được sử dụng, khi kịch bản của bạn kết nối với cơ sở dữ liệu và làm thế nào bạn đang kết nối. –

1

Nó có thể đến từ một số vấn đề khi bạn mô tả quy trình làm việc của mình.

Từ bối cảnh nhỏ: chạy script của bạn với RAILS_ENV=production ruby script9000.rb

Các vấn đề liên quan