Bonjour,
Dans le cadre d’un changement de serveur toujours j’ai un problème de DUMP SQL, je m’explique.
J’ai un serveur principale avec une application de production dessus et sa base de données.
Sur le site de la société il y a un autre poste informatique avec une autre application et sa propre base de données.
La logique était que le serveur principale avec l’application se connecte au poste informatique pour effectuer un dump afin d’y récupérer les ventes du jours.
Donc j’ai le script ci-dessous qui doit faire le travail
mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener > dump_bdd_poste_utilisateur.sql
mysql -h MA_BASE_LOCAL -u USER -pMOT_DE_PASSE nom_de_ma_BDD < dump_bdd_poste_utilisateur.sql
Problème mon fichier dump généré est vide et contient seulement
-- MySQL dump 10.16 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: 192.168.59.222 Database: NOM BASE DE DONNEE
-- Server version 5.1.37-community-log
**/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */** ;
**/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */** ;
**/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */** ;
**/*!40101 SET NAMES utf8mb4 */** ;
**/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */** ;
**/*!40103 SET TIME_ZONE='+00:00' */** ;
**/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */** ;
**/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */** ;
**/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */** ;
**/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */** ;
Or je n’ai pas de problème pour accéder à mon poste utilisateur depuis le serveur à l’aide des connexion SQL classique en ligne de commande.
Mon serveur utilise mysql/mariaDB, l’autre poste est sous EasyPHP avec Mysql
mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener
Est-ce que USER a bien les droits pour se connecter à la base de données depuis un autre hôte que localhost ?
Oui cela fonctionnait avant sans problème.
Le paramètre renseigné est % et le root est en localhost sur la base de données
Et rien n’a été modifié sur me poste utilisateur avec la seconde base
De plus j’y accède bien en me connectant en ligne de commande depuis mon serveur pour lister les tables ou le contenu de ses dernières
Tu y accèdes comment?
Est-ce que ceci fonctionne ?
mysql -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD
Et le dump sur la sortie standard ?
mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener
J’y accède depuis un script bash
Pour en ligne de commande depuis mon serveur
mysql -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD
Fonction OK
L’autre fonction toujours en ligne de commande
mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener
Me renvoie un fichier vide avec juste les en-tête cité au dessus.
C’est comme si mysql dump n’était pas activé sur mon serveur non ?
mysqldump fonctionne sinon tu aurais une erreur.
Ce serait bien que tu donnes le retour complet de la commande (sans la redirection dans un fichier) :
mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener
Oui ça donne ça
-- MySQL dump 10.16 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64)
-- Host: 192.168.59.222 Database: sygecar
-- ------------------------------------------------------
-- Server version 5.1.37-community-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
C’est vraiment tout ?
Il n’y a pas une ligne du type :
-- Dump completed on…
ou :
mysqldump: …
Oui c’est tous malheureusement 
Curieux…
D’après ce que je vois le serveur utilise mariadb 10.1 et le client mysql 5.1.37. Est-ce exact ?
Dans ce cas il doit y avoir des incompatibilités. je vois notamment un jeu de caractères utf8mb4 qui nécessite mysql 5.1.47 au minimum
À voir avec :
mysqldump --skip-set-charset
Oui c’est exact.
Pourtant je ne comprends pas j’ai fait un apt-get Install mysql
Je viens d’essayer et c’est la même chose.
Qu’elle autre solution il y aurait ?
Je suis pas dans la crotte si jamais 

Il faut installer une version plus récente de MySQL sur le poste que tu essaie d’atteindre. Mais je ne peux pas t’aider car je ne connais pas EasyPhp.
Ou alors tu essaies d’autres options de mysqldump (–set-charset utf8, --compatible=mysql40 ou autres, voir man mysqlump)
Autre solution de contournement, si le dump fait en local (donc avec le client mysql du 2e serveur) est correct: dans le script, remplacer le dump de la base distante par:
- une connexion SSH au serveur 2
- en paramètre, la commande qui doit effectuer le dump en local
- puis rapatriement (scp, rsync ou autre) du dump sur le serveur 1
Bonjour
–set-charset utf8
à fonctionné mon fichier dump contient bien les infos des tables exportés.
Merci