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 libmyodbc
La 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.ini
que 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.so
Préparation essais.
L’administrateur crée une base de données de test
# mysqladmin create famille
et me donne tous les droits nécessaires
# mysql famille
grant all on famille.* to billaud@localhost identified by 'abc123';
quit
Depuis 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
Bye
Configurer 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.
$ ODBCConfig
Dans 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> quit
Essais 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.