2011-12-01 2 views
2

J'essaie de connecter mon application rails 3 à une base de données mysql hébergée sur un serveur godaddy. Je suis capable de me connecter à distance en utilisant un client mysql, mais pas quand je lance l'application. Je suis capable de se connecter sur un mysql local, mais quand je tente de me connecter à ma base de données hébergée à distance je reçois cette erreur:Impossible de connecter Ruby on Rails à la base de données mysql distante

Mysql2::Error (Can't connect to MySQL server on '[host ip address]' (111))

Voici mon database.yml

development: 
    adapter: mysql2 
    encoding: utf8 
    host: host_ip_address 
    port: 3306 
    database: database_name 
    username: user_name 
    password: password 

Je développe mon application sur une machine Ubuntu si cela peut aider.

+0

Avez-vous essayé de jouer avec ou de demander GoDaddy votre réglage de prise? (/tmp/mysql.sock) –

+0

Vous n'utiliserez pas de socket pour vous connecter à une base de données distante. @Tony, il semble que la base de données distante refuse les connexions à partir de n'importe quoi par localhost. Comment vous êtes-vous connecté à la base de données distante avec le client mysql? Pouvez-vous mettre à jour votre question avec la commande et la réponse? Une chose que vous pourriez essayer de surmonter est de configurer un tunnel ssh vers l'hôte mysql et de vous connecter à travers celui-ci. – pduey

+0

@pduey Je me suis connecté en utilisant mysql workbench sans problème, et j'ai utilisé le même hôte, le même port, le même nom d'utilisateur et le même mot de passe. Je n'ai jamais utilisé de tunnel ssh auparavant; Je ferai des recherches et j'essaierai cela, et je vous dirai si j'arrive quelque part. – Tony

Répondre

2

Je suppose que, par mon commentaire d'origine, votre base de données distante refuse les connexions de tout sauf localhost. Sur la base de cette hypothèse, voici deux solutions:

  1. Utilisez un tunnel ssh. Il y a des tonnes de howto pour la connexion sur le tunnel de ssh, par exemple, http://www.howtogeek.com/howto/ubuntu/access-your-mysql-server-remotely-over-ssh/. Assurez-vous que votre base de données distante accepte les connexions à distance. Découvrez la réponse acceptée sur le fil stackoverflow suivant Can't connect to MySQL server error 111

+0

Merci beaucoup la connexion tunnel SSH travaillé. J'ai dû activer les connexions SSH sur mon serveur, mais cela a fonctionné. – Tony

2
  • Dans votre my.cnf, recherchez cette ligne:

    bind-address = 127.0.0.1 
    

    et adresse indiquée à 0.0.0.0

  • Accès mysql:

    mysql -u root -p 
    
  • que de créer un utilisateur sur mysql privilèges du serveur et accorder à tous:

    CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass'; 
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; 
    
Questions connexes