Connexion distante base SQL impossible

Connexion distante base SQL impossible - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 25-11-2015 à 13:33:53    

Bonjour,
 
Après une semaine de recherche je m'en remets à vous pour me donner de nouvelles pistes...
 
Le but:
Accéder à une base SQL depuis l'extérieure.
 
Le matériel / les softs:
Un NAS synology DS412+ , phpMyAdmin, MariDB, accès en VB.net
 
Le code réduit est le suivant:

Code :
  1. Dim ServerString As String = "Server=xx.xxx.xxx.xxx;Port=3306;User Id=MyUser;Password=MyPW;DataBase=MaBase
  2. Dim SQLConnection As MySqlConnection = New MySqlConnection
  3. SQLConnection.ConnectionString = ServerString
  4. SQLConnection.Open()


 
Ce code marche très bien sous mon propre réseau.
 
Depuis l'extérieure le message d'erreur est:
Unable to connect to any of the specified MySQL hosts.
 
J'ai redirigé mon port 3306 sur ma box vers mon NAS.
 
J'ai modifié le fichier my.cnf qui se trouve à trois endroits:
 

  • /etc/mysql
  • /var/packages/MariaDB/etc
  • /volume1/@appstore/MariaDB/etc/mysql


 
le fichier ressemble à ça:
 


#bind-address =0.0.0.0
port = 3306
socket = /run/mysqld/mysqld.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 240K
innodb_data_home_dir = /var/services/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/services/mysql
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
#innodb_log_file_size = 5M


 
 
Je n'ai pas de ligne "Skip-networking" nulle part.
 
Pour finir une commande à distance en SSH:

mysql -u MyUser -p -h xx.xxx.xxx.xxx


me retourne:
 

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 348
Server version: 5.5.44-MariaDB Source distribution
 
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement


 
 
Il me semble avoir fait tout ce qu'il était possible de faire, pourquoi je ne parviens pas à atteindre cette base de l'extérieure...?
 
Merci d'avance pour vos contributions.
 
 
-- edit BL pour le formattage


Message édité par black_lord le 25-11-2015 à 13:39:48
Reply

Marsh Posté le 25-11-2015 à 13:33:53   

Reply

Marsh Posté le 25-11-2015 à 13:38:01    

ton serveur mysql n'écoute pas sur le réseau.
 
transforme :


#bind-address =0.0.0.0  


 
en  


bind-address = a.b.c.d


 
avec a.b.c.d correspondant à ton IP, relance le service et zou

Message cité 1 fois
Message édité par black_lord le 25-11-2015 à 13:41:58

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 25-11-2015 à 14:18:26    

black_lord a écrit :

ton serveur mysql n'écoute pas sur le réseau.
 
transforme :


#bind-address =0.0.0.0  


 
en  


bind-address = a.b.c.d


 
avec a.b.c.d correspondant à ton IP, relance le service et zou


 
Je préfère l'option du tunnel via autossh :) (qui va au passage binder sur un port exotique en sortie et permettre de pas avoir a ouvrir le port sql sur la box)

Reply

Marsh Posté le 25-11-2015 à 16:04:46    

j'avais pas fait gaffe que c'etait hors-lan :/
 
c'est moche


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 25-11-2015 à 17:33:28    

Le restart se passe mal du coup :pt1cable:  
 
NAS> cp my.cnf /var/packages/MariaDB/etc
NAS> /usr/syno/bin/synopkg restart MariaDB
Failed to restart package 263

Reply

Marsh Posté le 25-11-2015 à 20:55:46    

Ca peut aider?
 
NAS> ps w|grep mysqld
13867 root      3768 S    /bin/sh /usr/bin/mysqld_safe --datadir=/var/services/mysql --pid-file=/run/mysqld/mysqld.pid
14172 mysql     324m S    /usr/bin/mysqld --basedir=/usr --datadir=/var/services/mysql --plugin-dir=/usr/lib/mysql/plugin --user=my
19724 root      3776 S    grep mysqld


Message édité par jonueva le 25-11-2015 à 20:56:20
Reply

Marsh Posté le 26-11-2015 à 09:10:02    

ERREUR SOUS RESEAU ENTREPRISE/**********************
 
 
MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.
   à 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\MyPath\Documents\Visual Studio 2015\Projects\Projet\Projet\Form1.vb:ligne 15
 
Acces en xx.xxx.xxx.xxx:3306 depuis un navigateur web----> Impossible d'afficher la page
 
 
 
ERREUR DEPUIS UNE CONNEXION TELEPHONE/**********************
 
 
MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to host 'xx.xxx.xxx.xxx' for user 'MyUser' using method 'mysql_native_password' failed with message: Reading from the stream has failed. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Reading from the stream has failed. ---> System.IO.EndOfStreamException: Tentative de lecture au-delà de la fin du flux.
   à MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
   à MySql.Data.MySqlClient.MySqlStream.LoadPacket()
   à MySql.Data.MySqlClient.MySqlStream.LoadPacket()
   à MySql.Data.MySqlClient.MySqlStream.ReadPacket()
   à MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.ReadPacket()
   à MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.AuthenticationFailed(Exception ex)
   à MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.ReadPacket()
   à MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.Authenticate(Boolean reset)
   à MySql.Data.MySqlClient.NativeDriver.Authenticate(String authMethod, Boolean reset)
   à 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\Path\Documents\Visual Studio 2015\Projects\Projet
 
 
 
Acces en xx.xxx.xxx.xxx:3306 depuis un navigateur web:
R���
5.5.44-MariaDB�2���G*<,iK|N�ÿ÷!� ����������P&kiP3NmZ[<X�mysql_native_password�


Message édité par jonueva le 26-11-2015 à 09:11:08
Reply

Marsh Posté le 26-11-2015 à 12:36:04    

Reste ERREUR SOUS RESEAU ENTREPRISE/**********************  
 
Le problème semble venir d'un proxy...

Reply

Marsh Posté le 26-11-2015 à 14:01:09    

sans vouloir être désagréable, est ce que tu comprends ce que tu fais ? parce que vouloir accéder à une DB via un browser, ça sous entend que non.


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 26-11-2015 à 17:35:37    

Je ne veux pas accéder à ma base par le browser, c'était juste pour tester le retour sur mon port 3306.
 
Après je te l'accorde c'est pas mon métier, mais j'ai tout même résolu mon problème en passant par le port 8080.


Message édité par jonueva le 26-11-2015 à 17:40:01
Reply

Marsh Posté le 26-11-2015 à 17:35:37   

Reply

Marsh Posté le 26-11-2015 à 17:56:58    

Non mais coco, t'as la solution pour passer a travers depuis ma remarque sur autossh : ( genre en cherchant sur google, ça te renvoie ça https://wiki.archlinux.fr/Autossh )
Mais, t'as fait comme t'as eu envie ! :D

Reply

Marsh Posté le 26-11-2015 à 18:48:45    

Désolé, le mot "autossh" m'a fait peur  :??: , mais je vais étudier cette solution maintenant car je trouve pas ma solution terrible mais je voulais quand même savoir pourquoi ça ne marchait pas.
 
Merci à vous.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed