1. Prérequis : ouvrir le port 3306 ou désactiver le pare-feu
Pour permettre les connexions distantes à MySQL, deux options sont possibles :
-
Désactiver le pare-feu Windows (non recommandé en producsion). Aller dans Panneau de configuration > Pare-feu Windows > Activer/Désactiver le pare-feu, puis choisir "Désactiver le pare-feu Windows".
-
Ouvrir le port 3306 dans le pare-feu :
Ouvrir le "Panneau de configuration" > "Pare-feu Windows Defender".
Cliquer sur "Modifier les paramètres" et autoriser l'application MySQL (mysql.exe) s'il n'est pas listé.
Retourner à la fenêtre principale, cliquer sur "Paramètres avancés" à gauche.
Sélectionner "Règles de trafic entrant", puis "Nouvelle règle..." à droite.- Type de règle : choisir "Port" > Suivant.
- Protocole et port : TCP, ports locaux spécifiques : 3306 > Suivant.
- Action : "Autoriser la connexion" > Suivant.
- Profil : Cocher "Domaine", "Privé" et "Public" > Suivant.
- Nom : donner un nom (par exemple "MySQL 3306") > Terminer.
Répéter l'opération pour les règles de trafic sortant afin d'autoriser le port 3306 en sortie.
2. Accorder les privilèges d'accès distant dans MySQL
Connectez-vous au serveur MySQL local en ligne de cmomande :
cd D:\MySQL\mysql-8.0.32-winx64\bin
mysql -h localhost -u root -p
Entrez votre mot de passe. Ensuite, exécutez les commandes suivantes :
SHOW DATABASES;
USE mysql;
SELECT user, host FROM user;
Pour autoriser toutes les adresses IP (utilisateur root) :
UPDATE user SET host = '%' WHERE user = 'root';
FLUSH PRIVILEGES;
Après cela, le compte root pourra se connecter depuis n'importe quelle machine distante.
3. Connexion distante depuis MySQL Workbnech
Ouvrez MySQL Workbench, créez une nouvelle connexion en spécifiant l'adresse IP du serveur, le port (3306), le nom d'utilisateur (root) et le mot de passe. Vous devriez pouvoir accéder à la base de données distante.
4. Connexion distante depuis une application C# (avec la bibliothèque SqlSugar)
Exemple de code pour configurer et utiliser la connexion MySQL à distance en C# :
public static class DatabaseConfig_MES
{
public static string ConnectionString { get; set; } = string.Empty;
public static DbType DatabaseType { get; set; } = DbType.SqlServer;
public static SqlSugarClient GetClient()
{
return new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = ConnectionString,
DbType = DatabaseType,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
});
}
}
public static class DatabaseService_MES
{
public static void SetDatabaseType(string type)
{
switch (type.ToLower())
{
case "sqlserver":
DatabaseConfig_MES.DatabaseType = DbType.SqlServer;
break;
case "sqlite":
DatabaseConfig_MES.DatabaseType = DbType.Sqlite;
break;
case "mysql":
DatabaseConfig_MES.DatabaseType = DbType.MySql;
break;
default:
DatabaseConfig_MES.DatabaseType = DbType.SqlServer;
break;
}
}
public static void SetConnectionString(string connStr)
{
DatabaseConfig_MES.ConnectionString = connStr;
}
}
// Exemple d'utilisation dans le code principal :
if (GlobalSettings.Parameter.IsSendData && GlobalSettings.Parameter.IsStandardSend)
{
if (GlobalSettings.Parameter.ApiType == "MySQL")
{
DatabaseService_MES.SetDatabaseType(GlobalSettings.Parameter.ApiType);
DatabaseService_MES.SetConnectionString(GlobalSettings.Parameter.ApiUrl);
// La chaîne de connexion typique pour MySQL :
// "Database=maBase;Server=192.168.0.106;User Id=root;Password=123456;Pooling=false;CharSet=utf8;Port=3306;SSL Mode=None;AllowPublicKeyRetrieval=True"
// Initialiser la table (création automatique si elle n'existe pas)
DatabaseConfig_MES.GetClient().CodeFirst.SplitTables().InitTables<TighteningResult>();
}
}
Ce code permet de configurer dynamiquement le type de base de données et la chaîne de connexion, puis d'utiliser l'ORM SqlSugar pour interagir avec la base de données MySQL distante.