2016-06-27 25 views
5

Ho un'applicazione Rails 4.2 distribuita su un server Ubuntu 14.4 Trusty. Il problema che sto avendo adesso è che non riesco a eseguire uno script che salva i record per me. Ottengo questo errore:Accesso MYSQL negato script ruby ​​nell'app Rails

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

Ho configurato il database di produzione da utilizzare nome utente root con la password giusta, ma dopo il riavvio del server e provare la nuova configurazione ottengo l'errore di cui sopra.

Sto eseguendo lo script navigando su lib/sul server ed eseguendo ruby script9000.rb. Lo script funziona bene fino a quando non tenta di salvare un record.

Perché ciò potrebbe accadere?


Lo script viaggi fino a 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

senza vedere lo script non c'è molto da fare oltre a indovinare alla cieca – jaydel

+0

ho aggiunto la parte in cui si rompe. Lo script attuale è enorme. Stava lavorando su un altro server che avevo. La mia ipotesi è che abbia qualcosa a che fare con il modo in cui MYSQL è impostato. –

+0

Sembra una preoccupazione per le credenziali MySQL. Dove la tua app specifica utente e login? Forse questa sarebbe una buona opportunità per impostare un nuovo utente MySQL con privilegi più stretti, piuttosto che usare root? – Nathan

risposta

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

E 'l'errore di MySQL, che significa che si sta tentando di connettersi al database con l'utente radice da localhost con vuoto o nessuna password. Assicurati che tu abbia utente root @ localhost sul tuo server mysql o assicurati di fornire la password corretta.

+0

Ho rimosso la password dall'account mysql di root. È stato in grado di salvare. Tuttavia questo è molto insicuro e ho bisogno di aggiustarlo. Cosa sta usando esattamente l'utente root senza una password? Proprio quello che è in esecuzione, sembra che devo configurarlo per funzionare con una password? E perché lo script viene eseguito come root quando eseguo lo script personalmente con il mio utente di distribuzione? –

+0

Lo script può essere eseguito come qualsiasi utente. Ancora più importante, quale utente e password sono usati, quando il tuo script si connette al database e come ti stai connettendo. –

1

Potrebbe venire da diversi problemi mentre descrivi il tuo flusso di lavoro.

Dal piccolo contesto: eseguire lo script con RAILS_ENV=production ruby script9000.rb