J'essaie de créer une application JSF à l'aide de l'IDE Eclipse. J'utilise un serveur mySQL distant comme base de données. Comment me connecter à cette base de données distante pour créer des tables et y accéder?
Indiquez simplement l'adresse IP/le nom d'hôte de la machine distante dans la chaîne de connexion à la base de données, au lieu de localhost
. Par exemple:
jdbc:mysql://192.168.15.25:3306/yourdatabase
Assurez-vous qu'aucun pare-feu ne bloque l'accès au port 3306
Assurez-vous également que l'utilisateur avec lequel vous vous connectez est autorisé à se connecter à partir de ce nom d'hôte particulier. Pour les environnements de développement, vous pouvez le faire sans danger par 'username'@'%'
. Vérifiez le manuel de création de l'utilisateur et le GRANT
manuel .
Vous devez indiquer l'adresse IP/le nom d'hôte de la machine rempote dans la chaîne de connexion.
import Java.sql.*;
import javax.sql.*;
public class Connect
{
public static void main (String[] args)
{
Connection conn = null;
try
{
String url = "jdbc:mysql://localhost:3306/mydb";
Class.forName ("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection (url,"root"," ");
System.out.println ("Database connection established");
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (conn != null)
{
try
{
conn.close ();
System.out.println ("Database connection terminated");
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
}
pour accéder à la base de données depuis une machine distante, vous devez accorder tous les privilèges à votre base de données.
exécutez le script suivant pour accorder des autorisations: GRANT ALL PRIVILEGES ON. TO utilisateur @ '%' IDENTIFIÉ PAR 'mot de passe';
De plus, vous devez vous assurer que la configuration du serveur MySQL (/etc/mysql/my.cnf,/etc/default/mysql sous Debian) n’a pas activé le "saut de réseau" et n’est pas lié exclusivement à l’interface de bouclage (127.0). .0.1) mais aussi à l’interface/adresse IP à laquelle vous voulez vous connecter.
Créez un nouvel utilisateur dans le schéma «mysql» (mysql.user) Exécutez ce code dans votre espace de travail mysql
“GRANT ALL ON . to user@'%'IDENTIFIED BY '';
Ouvrez le port "3306" de la machine sur laquelle se trouve la base de données .
Control Panel ->
Windows Firewall ->
Advance Settings ->
Inbound Rules ->
New Rule ->
Port ->
Next ->
TCP & set port as 3306 ->
Next ->
Next ->
Next ->
Fill Name and Description ->
Finish ->
Essayez de vérifier par un msg telnet sur cmd, y compris l'adresse IP du serveur de base de données
Fermez toutes les connexions ouvertes et connectées au port d’écoute du serveur, qu’il s’agisse de l’application ou de l’outil côté client (navicat) ou du serveur en cours d’exécution (Apache ou weblogic). Fermez d'abord toutes les connexions, puis redémarrez tous les outils MySQL, Apache, etc.
Sous Ubuntu, après avoir créé les versions localhost et '%' de l'utilisateur, et accordé un accès approprié à database.tables pour les deux, j'ai commenté l'adresse 'bind-address' dans /etc/mysql/mysql.conf.d/mysql .cnf et redémarrez mysql en tant que Sudo.
dans le fichier my.cnf, veuillez modifier les informations suivantes
## Au lieu de sauter le réseau, la valeur par défaut est désormais d'écouter uniquement le ## localhost qui est plus compatible et n'est pas moins sécurisé . ## bind-address = 127.0.0.1