Bonjour,

Je rencontre un problème de connexion pour me connecter à une base SQL depuis l'extérieur.

La base est sur un serveur de type Synology, gérée via phpMyAdmin.

J'utilise le code suivant (merci à la video
)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
Imports MySql.Data.MySqlClient
Public Class Form1
    Dim ServerString As String = "Server=xxxxxx.synology.me;Port=3306;User Id=xxxxxx;Password=xxxxxx;DataBase=DataBase"
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Dim SQLConnection As MySqlConnection = New MySqlConnection
 
        SQLConnection.ConnectionString = ServerString
 
        Try
            If SQLConnection.State = ConnectionState.Closed Then
                SQLConnection.Open()
                MsgBox("Successfully Connected to MySQL Database.")
            Else
                SQLConnection.Close()
                MsgBox("Connection is closed.")
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
End Class
En local pas de problème le message "Successfully Connected to MySQL Database." apparait bien.

Depuis l'extérieur quelque chose me bloque...

J'ai redirigé le port 3306 de ma box vers l' IP fixe de mon serveur.
L'utilisateur est défini en client sur "%" (Tous clients d’après ce que j'ai compris...?), je lui est ajouté également l'adresse du serveur, de la box, l'ip publique du serveur... Rien n'y fait.

L'erreur se produit sur SQLConnection.Open()

Le message d'erreur est le suivant:

MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts. ---> System.Net.Sockets.SocketException (0x80004005): Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu xxx.xxx.xxx.xxx:3306
à System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
à MySql.Data.Common.MyNetworkStream.CreateSocketStream(MySqlConnectionStringBuilder settings, IPAddress ip, Boolean unix)
à MySql.Data.Common.MyNetworkStream.CreateStream(MySqlConnectionStringBuilder settings, Boolean unix)
à MySql.Data.Common.StreamCreator.GetStream(MySqlConnectionStringBuilder settings)
à MySql.Data.MySqlClient.NativeDriver.Open()
à MySql.Data.MySqlClient.NativeDriver.Open()
à MySql.Data.MySqlClient.Driver.Open()
à MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
à MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
à MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
à MySql.Data.MySqlClient.MySqlPool.GetConnection()
à MySql.Data.MySqlClient.MySqlConnection.Open()
à WindowsApplication1.Form1.Form1_Load(Object sender, EventArgs e) dans C:\Users\xxxxxx\Documents\Visual Studio 2015\Projects\ProjectName\ProjectName\Form1.vb:ligne 13

Je ne comprends pas qui bloque la box, Mabase, phpMyAdmin...?