LibreOffice Calc requêter une base MySQL

Gnieark

On va voir dans ce tutoriel comment charger dans le tableur de LibreOffice des données provenant d'une base MySQL. Le PC client fonctionne sous une version Kubuntu et le serveur de BDD sur Debian (mais ça n'a pas d'importance).

Commentez .

- Titre : LibreOffice Calc requêter une base MySQL

- Auteur : Gnieark

- Parution : 24 juin 2014

- Mise à jour : 3 décembre 2014

- Licence : Copyright ® 2014 Gnieark. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Prérequis

- II. Permettre l'accès distant sur le serveur MySQL

- III. Sur le poste client

- III-A. Créer quelques requêtes

- III-B. Dans le tableur Calc

- IV. Enjoy !

- V. Remerciements

I - Prérequis

- Un serveur MySQL installé.

- LibreOffice installé sur le poste client.

II - Permettre l'accès distant sur le serveur MySQL

Éditez le fichier /etc/mysql/my.cnf.

Afin de permettre les connexions depuis d'autres ordinateurs, modifiez la ligne bind-adress par celle-ci :

bind-address            = 0.0.0.0

#Redémarrez mysql
/etc/init.d/mysql restart
#puis connectez-vous à mysql
mysql -u root -p

Ajoutez un utilisateur ayant les droits depuis un poste distant (remplacez localhost par % dans la commande GRANT)

#pour un accès en lecture seulement :
GRANT SELECT ON votrebase.* TO 'user'@'%' IDENTIFIED BY 'votreMotDePasse';
#Si vous souhaitez un accès total à la base :
GRANT ALL ON votrebase.* TO 'user'@'%' IDENTIFIED BY 'votreMotDePasse';

Si nécessaire, ouvrez le pare-feu pour permettre les connexions MySQL (port 3306). Voici un exemple si votre Firewall est à base d'IPtables et que votre LAN est 192.168.0.* :

iptables -A INPUT -p tcp --destination-port 3306 -m iprange --src-range 192.168.0.1-192.168.0.254 -j ACCEPT

III - Sur le poste client

Installez le connecteur sur le client :

sudo apt-get install libreoffice-mysql-connector

Voilà, on a tout ce qu'il faut. L'application LibreOffice Base servira d'intermédiaire entre Calc et le serveur MySQL. Depuis un Microsoft Office, MS Query aurait servi d'intermédiaire, mais il est plus transparent que oooBase.

Ouvrez LibreOffice -> Nouveau document-base de données.

Dans l'assistant de base de données, choisissez « Se connecter à une base de données existante » et « Mysql » comme ci-dessous :

« Connecter directement » (c'est plus simple) :

Ma base s'appelle tinaderp. Adaptez en fonction de la vôtre, ainsi que l'IP du serveur :

Puis l'utilisateur MySQL :

À l'étape suivante, surtout cochez « Oui, je souhaite que l'assistant référence la base de données ». Ce sera beaucoup plus facile pour retrouver les données dans le tableur. Puis cliquez sur terminer.

Il vous demande d'enregistrer le fichier. Je vous conseille de donner au fichier le nom de votre base de données.

On arrive sur cette interface :

III-A - Créer quelques requêtes

Mon objectif ici est de pouvoir faire des statistiques. La BDD étant relativement brute. Si j'importe la base de données directement dans un tableur, ça va être pénible (ceux qui ont fait déjà des formules de recherches matricielles dans un tableur me comprendront). Je vais donc créer les requêtes SQL qui me feront les sous-totaux, les décomptages tout en liant les tables afin d'avoir les intitulés et pas les clés. Bref, je veux avoir les tableaux que je n'aurai qu'à sélectionner pour établir les graphiques. Si ce n'est pas votre cas, que le contenu des tables de façon brute vous suffit. Passez directement au chapitre suivant.

Requêtes -> Créer une requête en mode SQL :

Testez la requête puis enregistrez-la. Donnez-lui un nom, le mien serait, par exemple : sommeParTypeParMois. Enregistrez votre fichier de base de données.

III-B - Dans le tableur Calc

Données -> Table de pilote -> Créer

Source de données enregistrée sous LibreOffice :

- sélectionnez votre base (qui a le nom du fichier base) ;

- le type : feuille si vous voulez une table brute, ou requête si vous voulez récupérer les données d'une requête :

Organisez comme il faut les colonnes, les lignes et les données en faisant du glisser-déposer :

IV - Enjoy !

V - Remerciements

Merci à Gnieark de nous permettre de publier son tutoriel.

Merci à jacques_jean et ClaudeLeloup pour la relecture orthographique.