Association Bordelaise des Utilisateurs de Logiciels libres
OpenOffice + MySQL / Debian Woody
Depuis longtemps j’avais entendu dire qu’on pouvait accèder à une base de données depuis OpenOffice, mais je n’étais jamais arrivé à le faire sur mes postes de travail (distribution Debian Woody). Malchance, maladresse, mauvais karma ?
Finalement non. En fait, ça vient de quelques problèmes techniques :
1. le pilote OpenOffice qui est censé causer avec les bases de données MySQL n’a pas l’air de fonctionner correctement. La solution est de faire causer OpenOffice avec une "source de données" ODBC, qui se chargera de relayer vers la base de données Mysql, et pour ça il faut demander l’installation de deux paquets de logiciels (sur le poste client) :
unixodbc-bin qui contient ce qu’il faut pour faire une source de
données ODBC, et la configurer
libmyodbc, la bibliothèque MySQL pour ODBC
2. Une deuxieme raison : le paquet unixodbc (amené avec unixodbc-bin) ne s’installe pas tout à fait correctement (ce qui amène OpenOffice à ronchonner à propos de la bibliothèque dynamique libodbcinst.so, qu’il ne trouve pas).
Comment réparer tout ça ?
Prenons les choses dans l’ordre : installation, corrections, création d’une base de tests, configuration de la source ODBC, et essais sous OpenOffice.
C’est parti.
Installer les paquets
Pas trop dur :
apt-get install unixodbc-bin libmyodbcLa procédure présente un écran "ODBC Setup" qui propose d’ajouter le pilote mysql à la liste de pilotes supportés par ODBC. Il faut répondre oui.
(si vous loupez cette étape, vous pouvez vous rattraper par la commande
odbcinst -i -d -f /usr/share/libmyodbc/odbcinst.inique l’on trouve dans /var/lib/dpkg/info/libmyodbc.postinst )
Corriger le lien
Lors de l’installation, la bibliothèque libodbcinst.so.1.0.0 est mise dans /usr/lib, et un lien symbolique libodbcinst.so.1 est créé vers cette bibliothèque. Malheureusement il manque un autre lien libodbcinst.so, qu’on peut ajouter par la commande
ln -s /usr/lib/libodbcinst.so.1 /usr/lib/libodbcinst.soPréparation essais.
L’administrateur crée une base de données de test
# mysqladmin create familleet me donne tous les droits nécessaires
# mysql famille
grant all on famille.* to billaud@localhost identified by 'abc123';
quitDepuis mon compte, je crée une table :
$ mysql famille -u billaud -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 18 to server version: 3.23.49-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create table enfants (
-> prenom varchar(30) primary key,
-> annee int
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> quit
ByeConfigurer la source ODBC
Le fonctionnement de la source de données ODBC est déterminé par un fichier de configuration (.odbc.ini), qui indique quelle(s) bases(s) de données on veut utiliser (sur quel serveur, nom de la base, type de la base...). On peut l’éditer avec l’outil ODBCConfig.
$ ODBCConfigDans l’onglet User DSN (DSN = Data Source Name), cliquer sur Add. Sélectionner le pilote MySQL, et cliquer sur OK. Apparait alors une boite "Datasource properties".
Remplir Name avec "essai", Server avec "localhost", et Database avec "famille", et sauver. Ignorez le message d’erreur qui s’affiche en sortant
QMutex::~QMutex: destroy failure: Périphérique ou ressource occupéOn vérifie que la source ODBC fonctionne avec isql
$ isql essai billaud abc123
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> list
[ISQL]ERROR: Could not SQLExecute
SQL> select * from enfants;
+-------+------+
| prenom| annee|
+-------+------+
+-------+------+
0 rows affected
SQL> quitEssais sous OpenOffice
Lancer openoffice, créer/ouvrir un document.
Dans Outils > Source de données, onglet Général,
ajouter la source ODBC
Nom : mabase
Type : ODBC
sdbc:odbc : essai
(dans ce document j’ai pris des noms différents famille/essai/mabase pour bien distinguer entre bases, sources de données etc.)
Dans l’onglet ODBC, mettre le nom d’utilisateur (billaud) et cochez mot de passe requis.
Passez ensuite à l’onglet Tables : on vous demande votre mot de passe (abc123) et la table enfants apparait.
Pour afficher/éditer le contenu de la table enfants, passer dans Affichage - source de données, puis développer mabase / Tables, cliquer sur enfants, et voila.
