2016-11-07 3 views
0

hat jemand in letzter Zeit Probleme mit diesem Prozess?heroku Schienen app: test RDS mysql wie von Heroku Juni 2016 Artikel vorgeschlagen?

Ich habe am Ende eine neue grundlegende Rails App erstellen, auf Heroku bereitstellen und dann versuchen, RDS-Konnektivität hinzuzufügen. hoffe wirklich jemand kann meine fehler erkennen ich werde verrückt!

  1. warum selbst wenn sie versuchen, ‚Mode‘ lokal auszuführen Produktion, die immer noch versuchen, localhost db Benutzer verwenden/pass ?? ich frage mich, ob es einige config versteckt in schienen irgendwo

  2. zweiten schritt, habe ich etwas offensichtliches verpasst? Ich habe eine grundlegende app von absoluten Grund auf neu versucht den Führungen nach allen, kann immer noch nicht verbinden

  3. der Fehler kann über Socke einen Hinweis auf schlechte Config an anderer Stelle nicht anschließen, sollte es keine Steckdosen verwendet werden, nur Portzugang?

dank Ben

gefolgt

App wie folgt

konfiguriert
  • aktualisiert Schienen App database_url
  • RDS erstellt in North Virgina (dies ist der gleiche wie Heroku ich glaube, aber über Latenz nur noch lässt sich keine Sorgen) verwenden
  • Sicherheitsgruppe inbound port 3306 0.0.0.0/0 (zuerst versuchte ich spezifische rds erstellt Gruppe, dann versuchte ich die vollständige Standardeinstellung, basierend auf dieser: Connecting Heroku to RDS using MySql2)
  • einrichten SSL in Gran ts GRANT USAGE ON *.* TO '<usr>'@'%' REQUIRE SSL;
  • hinzugefügt cert Heroku Repo (Auszug siehe unten)
  • DATABASE_URL=mysql2:://<usr>:<pwd>@pure-reaches-94579.cfc59p8se1g1.us-east-1.rds.amazonaws.com/purereaches?sslca=config/amazon-rds-ca-cert.pem
  • Instanz rds neu gestartet hinzugefügt (amazon-rds-ca-cert.pem alle Zwischenprodukte darin zu haben scheint) bei jeder versuchen
  • Ich habe versucht, selbst einfache RDS Passwörter zu denken

nächster Schritt der Untersuchung, dass komplexe irgendwie mit der uRL messed

ich versucht, die Produktion vor Ort zu laufen, aber Datenbank-URL verwenden, um RDS zu verbinden:

$ export RACK_ENV="production" 
    $ export RAILS_ENV="production" 
    $ export SECRET_KEY_BASE="blah" 
    $ export DATABASE_URL="mysql2:://usr:[email protected]/purereaches?sslca=config/amazon-rds-ca-cert.pem" 
    $ rails server -e production 
    ... 
    Mysql2::Error (Access denied for user 'root'@'localhost' (using password: NO)): 
    mysql2 (0.4.5) lib/mysql2/client.rb:89:in `connect' 
    ... 

dies zeigt, dass die Standard-Schienen-app config lokalen Host noch

zu verbinden versucht, was ich bin hier fehlt! ?

Details

nicht über ssl auf cli anmelden können - offensichtlich nicht gut

$ mysql -h pure-reaches-94579.cfc59p8se1g1.us-east-1.rds.amazonaws.com -u <usr> -p purereaches --ssl-ca=$HOME/Documents/repositories/baseherokuapp/baseherokuappconfig/amazon-rds-ca-cert.pem --ssl-verify-server-cert 
    Enter password: 
    ERROR 2026 (HY000): SSL connection error: SSL_CTX_set_default_verify_paths failed 

Schienen app nicht

gibt mysql2::Error (Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)):

verbinden 0

info

ich bin besorgt, es ist immer noch versuchen zu verwenden sock ... ist das ein red herring?

database.yml

default: &default 
     adapter: mysql2 
     encoding: utf8 
     pool: 5 

    # for next step test 
    # rails app error saying cannot connect to root @ localhost! 
    development: 
     <<: *default 
     url: <%= ENV['DATABASE_URL'] %> 

    production: 
     <<: *default 
     url: <%= ENV['DATABASE_URL'] %> 

gewährt Tisch

 mysql> show grants; 
    +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
    | Grants for [email protected]%                                                                                       | 
    +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
    | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'purereaches'@'%' IDENTIFIED BY PASSWORD <secret> REQUIRE SSL WITH GRANT OPTION | 
    +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
    1 row in set (0.22 sec) 

Antwort

0

So scheint es, ich habe zu lange an der gleichen Sache gestarrt. Danke heroku Unterstützung für den Hinweis, dass ich zwei ":" in meiner Zeichenfolge hatte! Was für ein Muppet ich bin.