Se connecter à la base de données MySQL distante via SSH à l'aide de Java
Comment puis-je me connecter à la base de données MySQL distante via SSH à partir d'une application java? Petit exemple de code est utile pour moi et je te remercie de ce.
- Jetez un oeil à cette réponse...
Vous devez vous connecter pour publier un commentaire.
Ma compréhension est que vous souhaitez accéder à un serveur mysql sur une machine distante et à l'écoute sur disons le port 3306 à travers un tunnel SSH.
Pour créer un tunnel de port 1234 sur votre machine locale vers le port 3306 sur une machine distante en utilisant la ligne de commande client ssh, tapez la commande suivante à partir de votre ordinateur local:
De faire la même chose à partir de Java, vous pouvez utiliser JSch, une implémentation Java de SSH2. À partir de son site web:
Pour un exemple, regardez
PortForwardingL.java
. Une fois la session connectée, créer votre connexion JDBC pour MySQL en utilisant quelque chose commejdbc:mysql://localhost:1234/[database]
que l'URL de connexion.localhost:[port]
de java, il tente comme toujours, sans aucune exception, mais il ne peut pas se connecter à la base de données. Toute aide est appréciée.Mon code de détail est ci-dessous:
Tandis que les questions /réponses sont correctes, ils obscurcir le code importante dans les gonfle d'un autre code.
C'est le code de base dont vous avez besoin pour votre tunnel de JDBC (ou tout autre) connexion de base de données à travers un canal SSH:
Vous allez également avoir à traiter avec l'hôte de la vérification de la clé. Pour voir:
Comment faire pour résoudre Java UnknownHostKey, tout en utilisant JSch SFTP bibliothèque?
Tout d'abord, merci fonctionne très bien!
Cependant, je me demande si je dois réutiliser cette Session pour tous (potentiellement simultanée) de Connexion SQL, ou si je dois créer une nouvelle Session à chaque fois et seulement actualiser si, pour une raison quelconque, il a expiré.
Actuellement, je le ferais à chaque fois que je fais une connexion créer une nouvelle instance de ce Contrôleur ici et puis de faire des requêtes SQL avec la connexion que j'ai reçu de lui, puis le fermer manuellement.
Serait bien aussi si je pouvais faire la classe utilisables avec le try-with-ressource, et la fermeture de lui-même. Se penchera sur cette question. Cause I dont wanna miss fermeture.
C'est comment la chose ressemble, je suis DB Connexions à partir de la droite maintenant.
Si vous vous demandez DbSettingsController Ive me suis fait trop, met juste les paramètres dans une colonne de Texte dans un local SQLite DB, avec une touche affectée à elle (que les énumérations int valeur). A juste copier coller le code que j'ai repris d'un autre projet, donc c'était simple et plus rapide de le faire de cette façon.